反射(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提供的属性和方法获取这个类型的方法、字段、属性、事件、参数、构造函数等一切信息。