首页 > 代码库 > C#中的反射的介绍

C#中的反射的介绍

反射的用途:



(1)使用Assembly定义和加载程序集,加载在程序集清单中列出模块,以及从此程序集中查找类型并创建该类型的实例。


(2)使用Module了解包含模块的程序集以及模块中的类等,还可以获取在模块上定义的所有全局方法或其他特定的非全局方法。


(3)使用ConstructorInfo了解构造函数的名称、参数、访问修饰符(如pulic 或private)和实现详细信息(如abstract或virtual)等。


(4)使用MethodInfo了解方法的名称、返回类型、参数、访问修饰符(如pulic 或private)和实现详细信息(如abstract或virtual)等。


(5)使用FiedInfo了解字段的名称、访问修饰符(如public或private)和实现详细信息(如static)等,并获取或设置字段值。


(6)使用EventInfo了解事件的名称、事件处理程序数据类型、自定义属性、声明类型和反射类型等,添加或移除事件处理程序。




通过反射调用方法



protected void Page_Load(object sender, EventArgs e)

 {  

     System.Reflection.Assembly ass = Assembly.LoadFrom(AppDomain.CurrentDomain.BaseDirectory+"bin\\\\WebApplication1.dll"); //加载DLL

     System.Type t = ass.GetType("WebApplication1.MainPage");//获得类型

 

       string name=typeof(MainPage).AssemblyQualifiedName;

     System.Type t1 = Type.GetType(name);

System.Type t2 = typeof(MainPage);

 

     object o = System.Activator.CreateInstance(t);//创建实例

       System.Reflection.MethodInfo mi = t.GetMethod("RunJs1");//获得方法

       mi.Invoke(o, new object[] { this.Page, "alert(‘测试反射机制‘)" });//调用方法

 

       System.Reflection.MethodInfo mi1 = t.GetMethod("RunJs");

     mi1.Invoke(t, new object[] { this.Page, "alert(‘测试反射机制1‘)" });//调用方法

 }




参考资料:   C#中的反射   http://www.studyofnet.com/news/520.html


本文出自 “学习也休闲” 博客,请务必保留此出处http://studyofnet.blog.51cto.com/8142094/1529631