C# Attribute

[AttributeUsageAttribute(AttributeTarget.All),
AllowMultiple = true, 
Inherited = true]
class MyNewAttribute: System.Attribute
{
   //
} 

  

特性,就是为目标元素,可以是数据集、模块、类、属性、方法、甚至函数参数等加入附加信息,类似于注释,但是可以在运行期以反射的方式获得。定制特性主要应用在序列化、编译器指令、设计模式等方面。

 

多个特性可以应用于同一元素,特性间以逗号隔开,以下表达规则有效:[AttributeUsage][ Flags]、[AttributeUsage, Flags]、[Flags, AttibuteUsageAttribute]、[AttributeUsage(), FlagesAttribute()]

attibute实例,是在编译期进行初始化,而不是运行期。

C#允许以指定的前缀来表示特性所应用的目标元素,建议这样来处理,因为显式处理可以消除可能带来的二义性。例如:

namespace Anytao.net 
{
    [assembly: MyAttribute(1)]          //应用于程序集
    [moduel: MyAttribute(2)]            //应用于模块
    pubic class Attribute_how2do
    {
        //
    } 
}

  

AttributeUsageAttribute特性的作用:Specifies the usage of another attribute class.

往往在定义新特性时应用以前的特性。

[AttributeUsageAttribute(AttributeTarget.All),
AllowMultiple = true, 
Inherited = true]
class MyNewAttribute: System.Attribute
{
   //
} 

  

  1. 特性不会影响应用元素的任何功能,只是约定了该元素具有的特质。
  2. 所有非抽象特性必须具有public访问限制。
  3. 特性常用于编译器指令,突破#define, #undefine, #if, #endif的限制,而且更加灵活。
  4. 特性常用于在运行期获得代码注释信息,以附加信息来优化调试。
  5. 特性可以应用在某些设计模式中,如工厂模式。
  6. 特性还常用于位标记,非托管函数标记、方法废弃标记等其他方面。

下面是很详细的Attribute应用教程:

Attribute在.net编程中的应用(一)

Attribute在.net编程中的应用(二)

Attribute在.NET编程中的应用(三)

 Attribute在.NET编程中的应用(四)

 Attribute在.NET编程中的应用(五)

Attribute在.NET编程中的应用(六)

posted on 2011-12-19 14:43  cknife  阅读(303)  评论(0编辑  收藏  举报

导航