您的位置:首页 > 其它

一个浅显易懂的反射例子

2008-01-09 15:19 302 查看
反射,就是程序集的一面镜子,所以才叫反射.废话少说,以一个简单的例子切入正题吧:

1 创建用于反射使用的DLL

新建一个C#类库项目,拷贝源代码如下,编译生成DLL(假如DLL的文件名是TestReflect.dll)

代码如下:

using System;

namespace Webtest

应用于反射的例子
在ASPNET页面中加入以下函数:

private void Button1_Click(object sender, System.EventArgs e)

{

System.Reflection.Assembly ass;

Type type ;

object obj;

try

{

ass = System.Reflection.Assembly.LoadFile(@"C:\TestReflect\ReflectQuickStart\TestReflect\bin\Debug\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+"<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;

}

}
以上是本人的粗浅理解,但是倒是可以作为一个入门的例子.just keep it simple and stupid.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: