1 创建用于反射使用的DLL
新建一个C#类库项目,拷贝源代码如下,编译生成DLL(假如DLL的文件名是TestReflect.dll)
using System; namespace Webtest { /**/// ReflectTest 的摘要说明。 /// public class ReflectTest { public ReflectTest() {} public string WriteString(string s) { return "欢迎您," + s; } /**/// dsajkjflasjdfalksdjfaskfd /// /// /// public static string WriteName(string s) { return "欢迎您光临," + s; } public string WriteNoPara() { return "您使用的是无参数方法"; } } }
2 应用于反射的例子
在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"}); //实例方法的调用 Response.Write(s+"
"); method = type.GetMethod("WriteName");//方法的名称 s = (string)method.Invoke(null,new string[]{"jianglijun"}); //静态方法的调用 Response.Write(s+"
"); method = type.GetMethod("WriteNoPara");//无参数的实例方法 s = (string)method.Invoke(obj,null); Response.Write(s+"
"); method = null; } catch(Exception ex) { Response.Write(ex+"
"); } finally { ass = null; type = null; obj = null; } }