您的位置:首页 > 编程语言 > C#

C#反射机制

2014-05-13 18:01 155 查看



一:反射的定义
  审查元数据并收集关于它的类型信息的能力。元数据(编译以后的最基本数据单元)就是一大堆的表,当编译程序集或者模块时,编译器会创建一个类定义表,一个字段定义表,和一个方法定义表等。
  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         }




三:获取程序集信息

四:反射调用方法

五:反射调用用户/自定义控件

六:反射实现工厂模式

七:自定义ORM框架

/article/5750476.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: