反射的作用: 1. 可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型 2. 应用程序需要在运行时从某个特定的程序集中载入一个特定的类型,以便实现某个任务时可以用到反射。 3. 反射主要应用与类库,这些类库需要知道一个类型的定义,以便提供更多的功能。
1 需要反射的DLL using System; namespace Webtest { public class ReflectTest { public ReflectTest(){} public string WriteString(string s) { return "欢迎您," + s; } //静态函数 public static string WriteName(string s) { return "欢迎您光临," + s; } //不带参数的函数 public string WriteNoPara() { return "您使用的是无参数方法"; } } }
应用于反射的例子-在aspNET页面中加入以下函数: public void test1() { System.Reflection.Assembly ass; Type type ; object obj; try { ass = System.Reflection.Assembly.LoadFile(@"d:\TestReflect.dll");//要绝对路径 type = ass.GetType("Webtest.ReflectTest");//必须使用 名称空间+类名称 System.Reflection.MethodInfo method = type.GetMethod("WriteString");//方法的名称 obj = ass.CreateInstance("Webtest.ReflectTest");//必须使用名称空间+类名称 string s = (string)method.Invoke(obj,new string[]{"jianglijun"}); // 实例方法的调用 或:string s = (string)method.Invoke(obj,Object[] parametors = new Object[]{"param"}); Response.Write(s+"<br>"); method = type.GetMethod("WriteName");//方法的名称 s = (string)method.Invoke(null,new string[]{"jianglijun"}); // 静态方法的调用 Response.Write(s+"<br>");
method = type.GetMethod("WriteNoPara");//无参数的实例方法 s = (string)method.Invoke(obj,null); Response.Write(s+"<br>"); method = null; } catch(Exception ex) { Response.Write(ex+"<br>"); } finally { ass = null; type = null; obj = null; } }
|
请发表评论