C#反射机制(转)
2015-09-13 23:08
651 查看
一:反射的定义
审查元数据并收集关于它的类型信息的能力。元数据(编译以后的最基本数据单元)就是一大堆的表,当编译程序集或者模块时,编译器会创建一个类定义表,一个字段定义表,和一个方法定义表等。
System.reflection命名空间包含的几个类,允许你反射(解析)这些元数据表的代码
System.Reflection.Assembly
System.Reflection.MemberInfo
System.Reflection.EventInfo
System.Reflection.FieldInfo
System.Reflection.MethodBase
System.Reflection.ConstructorInfo
System.Reflection.MethodInfo
System.Reflection.PropertyInfo
System.Type
层次模型:
二:获取类型信息:
三:获取程序集信息
四:反射调用方法
五:反射调用用户/自定义控件
六:反射实现工厂模式
七:自定义ORM框架
审查元数据并收集关于它的类型信息的能力。元数据(编译以后的最基本数据单元)就是一大堆的表,当编译程序集或者模块时,编译器会创建一个类定义表,一个字段定义表,和一个方法定义表等。
System.reflection命名空间包含的几个类,允许你反射(解析)这些元数据表的代码
System.Reflection.Assembly
System.Reflection.MemberInfo
System.Reflection.EventInfo
System.Reflection.FieldInfo
System.Reflection.MethodBase
System.Reflection.ConstructorInfo
System.Reflection.MethodInfo
System.Reflection.PropertyInfo
System.Type
层次模型:
二:获取类型信息:
1 class MyClass 2 { 3 public string m; 4 public void test() { } 5 public int MyProperty { get; set; } 6 } 7 8 //获取类型信息 9 protected void Button1_Click(object sender, EventArgs e) 10 { 11 Type type = typeof(MyClass); 12 Response.Write("类型名:" + type.Name); 13 Response.Write("<br/>"); 14 Response.Write("类全名:" + type.FullName); 15 Response.Write("<br/>"); 16 Response.Write("命名空间名:" + type.Namespace); 17 Response.Write("<br/>"); 18 Response.Write("程序集名:" + type.Assembly); 19 Response.Write("<br/>"); 20 Response.Write("模块名:" + type.Module); 21 Response.Write("<br/>"); 22 Response.Write("基类名:" + type.BaseType); 23 Response.Write("<br/>"); 24 Response.Write("是否类:" + type.IsClass); 25 Response.Write("<br/>"); 26 Response.Write("类的公共成员:"); 27 Response.Write("<br/>"); 28 MemberInfo[] memberInfos = type.GetMembers();//得到所有公共成员 29 foreach (var item in memberInfos) 30 { 31 Response.Write(string.Format("{0}:{1}", item.MemberType, item)); 32 Response.Write("<br/>"); 33 } 34 }
三:获取程序集信息
相关文章推荐
- 关于C#的静态类和静态构造函数
- C#实现所有经典排序算法
- c#配置文件的简单操作
- C#读写config配置文件
- 在制作水晶报表时遇到此错误未处理System.IO.FileNotFoundException HResult=-2147024894
- 读书心得20150913
- 巧用FileShare解决C#读写文件时文件正由另一进程使用的bug
- C#读取Word模板替换相应的字符串(标签)生成新的Word
- C#内存释放(垃圾回收)
- C#在Winform中改变Textbox高度三种方法
- c#开发安卓学习
- C#中DataGridView控件使用大全
- C# mvc中为Controller或Action添加定制特性实现登录验证
- C#跨线程调用
- C#~异步编程续~.net4.5主推的await&async应用(转)
- 说说C#的async和await(转)
- C#迭代语句
- C#—接口 PK 抽象类
- c# switch case语句
- c#泛型冒泡排序法