首页 > 代码库 > [2014-9-9]反射

[2014-9-9]反射

1.反射即是获取一个运行程序或其他程序的元数据

2.type类是一个抽象类,不能被实例化,用来包含类型的数据

Type t = myInstance.GetType();

Type t =Typeof(myInstance);

3.特性(attribute)

特性是一种向程序集增加元数据的语言结构,特性片被方括号包围,其中是特性名和特性的参数列表

Obsolete特性 将程序结构标注为过期

Conditional特性 包含或者排斥特性方法的所有调用

 3.1多个特性

  独立特性相互重叠在一起,单个特性片段,特性之间用逗号分开。

 特性为字段和方法上的特性

 3.2自定义特性

 声明一个派生自 System.Attribute类 后缀为Attribuete结尾的名称

 建议声明为sealed特性类

 公共成员为 字段,属性,构造函数

  对于字段,声明指定了使用单个字符串的构造函数,对于方法,声明指定了使用了两个字符串的构造函数

  3.3 构造函数中位置参数和命名参数

  命名参数设置特性的字段或者属性的值

  [MyAttribute("class","Reliever=arr",ver="0.1")] 后面两个为命名参数

4 IsDefined方法,检测某个特性是否应用于某个类

t.IsDefined(typeof(MyAttribute),false)

第一个参数 接受检查特性type对象

第二个参数 是否搜素继承树来查找这个特性

5 GetCustomAttribute 方法 返回应用到结构的特性的数组

Object[] arr =t.GetCustomAttribute(false)

[2014-9-9]反射