反射(Reflection)是一个非常强大的工具,可以用来查看和遍历类型和类型成员的元数据;动态创建类型实例,动态调用所创建的实例方法、字段、属性;迟绑定方法和属性。此次要介绍的是使用反射查看类型成员信息——遍历枚举。代码如下:

 1 private static DataTable GetData()
 2 {
 3     Type t=typeof(Enum);                   // 创建类型
 4     FieldInfo [] fieldArray=t.GetFields(); //获取字段信息对象集合
 5     DataTable dt=new DataTable();
 6     dt.Columns.Add("Name",Type.GetType("System.String"));
 7     dt.Columns.Add("Value",Type.GetType("System.Int32"));
 8     foreach(FieldInfo field in fieldArray)
 9     { 
10          if(!field.IsSpecialName)
11          { 
12               DataRow dtRow=dt.NewRow();
13               dtRow[0]=field.Name;
14               dtRow[1]=Convert.ToInt32(field.GetRawConstanValue());
15               dt.Rows.Add(dtRow);
16           }
17      }
18 return dt;
19 }

  Type类是反射的核心,这个类封装了类型的元数据,是进行反射的入口。当获得了类型的Type对象后,就可以根据Type提供的属性和方法获取这个类型的方法、字段、属性、事件、参数、构造函数等一切信息。

posted on 2017-09-04 20:23  2317  阅读(421)  评论(0编辑  收藏  举报