[From 18]定制特性(Attribute)

一.定制特性介绍
定制特性:利用定制特性,可宣告式地为自己的代码构造添加注解来实现特殊功能。定制特性允许为几乎每一个元数据记录项定义和引用信息。这种可扩展的元数据信息能在运行时查询,从而动态改变代码的执行方式。
 
作用范围:C#只允许将特性应用于定义一下任何目标元素的源代码:程序集,模块,类型(类,结构,枚举,委托,接口),字段,方法(含构造方法),方法参数,方法返回值,属性,事件和泛型类型参数。
 
定制特性其实是一个类型的实例。为了符合“公共语言规范”(CLS)的要求,定制特性类必须直接或间接从公共抽象类System.Attribute派生。
 
 
二.定义自己的特性类
1.限定作用范围:为了告诉编译器这个特性的合法应用范围,需要向特性类引用System.AttributeUsageAttribute类的实例。下面是新的代码:
 
2.是否允许向选定的目标元素应用多次:
例:
[AttributeUsage(AttributeTargets.Object,AllowMultiple=true)]
 
3.是否应用于子类:
[AttributeUsage(AttributeTargets.Object,Inherited = true)]
 
4.定义特性类的实例构造器,字段和属性时,可供选择的数据类型并不多。具体地说,只允许Boolean,Char,Byte,SByte,Int16,Int32,UInt32,Int64,UInt64,Single,Double,String,Type,Object或枚举类型。
 
三.检测定制特性
五.匹配定制特性
重写Match:默认的Match就是根据Attribute.Equls的逻辑,不过可以重写。
posted @ 2019-03-08 17:44  Real陈麟  阅读(155)  评论(0编辑  收藏  举报