请各位高手教教我,c#代码中有些部分有些在[]中的代码例如:[Description(""),Bindable(true),Category("Appearance"),DefaultValue("")]还有强名称那个,这些标签似的代码具体有什么用?有没有什么资料?

解决方案 »

  1.   

    这个称为Attribute(特性),中文名很怪的
    你google一下吧,说起来很费劲的,主要靠理解
      

  2.   

    特性(Attributes)是一种崭新的声明性信息。我们不仅可以通过特性来定义设计层面的信息(例如help file, URL for documentation)以及运行时(run-time)信息(例如使XML与class相联系),而且我们还可以利用特性建立自描述(self-describing)组件。在这篇教程中,我们将会看到如何建立和添加特性到各种程序实体以及如何在运行时环境中获取特性信息http://www.pconline.com.cn/pcjob/process/other/others/0409/445997.html
      

  3.   

    DescriptionAttribute  属性和事件   定义一小块文本,该文本将在用户选择属性或事件时显示在属性浏览器底部。
     
    BindableAttribute     属性         指定是否要绑定到该属性CategoryAttribute     属性和事件   指定类别的名称,在该类别中将对属性或事件进行分组。当使用了类别时,组件属性和事件可以按逻辑分组显示在属性浏览器中。DefaultValueAttribute 属性         为属性设置一个简单的默认值。
     
      

  4.   

    [Bindable(true),
     Category("Appearance"),
     DefaultValue(""),
     Description("The e-mail address.")]public virtual string Email {
         get { 
            string s = (string)ViewState["Email"];
            return (s == null) ? String.Empty : s;
         }
         set {
            ViewState["Email"] = value;
         }
    }特性(以粗体表示)定义了新控件将如何与设计器 (Visual Studio) 进行交互。Email 属性的特性告诉 Visual Studio 如何在设计过程中处理属性: • Bindable — Email 属性可绑定 到数据源。您可以将 Email 字段链接到数据库、XML 文件或任何其他 DataSet。该特性强制 Visual Studio 在控件的可绑定属性列表中显示 Email 属性。 
     
    • Appearance —Email 属性将显示在 Appearance 类别下的属性视图中。您可以选择想要的任何类别,包括默认类别:Appearance、Accessibility、Behavior、Data、Layout 或 Misc。只要用户选择了属性的类别组织方法,Email 属性将会显示在 Appearance 下。 
     
    • DefaultValue — Email 属性具有一个空的默认值。尽管空值对于 Email 字段来说有意义,但对于您添加到控件中的其他属性可能并不合适。当用户将您的控件放到他们的 Web 页上时,选择适当的默认值可为用户免去不计其数的单击操作。 
     
    • Description — 属性说明显示在控件列表下,并且也可能作为工具提示出现。Email 属性将具有 The e-mail address 说明。 
     
    • Localizable — 它会用发送信号的方式通知 ASP.NET 2.0 Framework 该控件包括可以针对不同语言或位置进行配置的文本属性。 
     您可以使用 System.ComponentModel 命名空间中的各种特性来进一步改进任何特殊属性的外观和行为。我们将在本文的使用设计器部分中更详细地介绍修改属性或控件的行为的方法。接下来,我们需要添加 Text 属性。Text 属性与 Email 属性稍有不同,因为我们希望将 Text 显示为由 MailLink 控件发出的 HTML 的一部分。为此,我们需要从 System.Web.UI 命名空间中添加一个新的特性。
      

  5.   

    这些东西叫做Attribute,编译器在编译的时候遇到[]中有个名为Abc的东西,它就回去找AbcAttribute类,并且检查它是不是派生自Attribute类。如果是,那这是一个正确的Attribute,然后就生成这个Attribute类,例如编译器遇到[Abc("Hello",1234)]就会尝试调用AbcAttribute的参入可以为("Hello",1234)的构造函数,如果又成功的话,就没问题了,可以把这个Attribute保存下来。在通过Reflection对类、函数、属性等进行操作的时候,例如在VS的IDE中,可以检查一个类带有那些Attribute的派生类,然后就如同操作普通类一样操作Attribute。例如如果AbcAttribute类有一个构造函数(string, int),这个构造函数把Name和Length这两个属性赋值,那么有[Abc("Hello",1234)]标记的东西就能够通过Reflection获取到一个AbcAttribute对象,同时这个对象的Name和Length分别就是这两个值。而楼上已经有很多人列出了很多系统自带的和常用的Attribute,你要知道所有已有Attribute就在MSDN查找一下名为*Attribute的类就可以了。