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

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

  层次模型:

  



二:获取类型信息: 

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框架

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