C#反射实例讲解

王朝c#·作者佚名  2008-05-30
窄屏简体版  字體: |||超大  

1 创建用于反射使用的DLL

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

1using System;

2

3namespace Webtest

4{

5 /**//// <summary>

6 /// ReflectTest 的摘要说明。

7 /// </summary>

8 public class ReflectTest

9 {

10 public ReflectTest()

11 {}

12

13 public string WriteString(string s)

14 {

15 return "欢迎您," + s;

16 }

17

18 /**//// <summary>

19 /// dsajkjflasjdfalksdjfaskfd

20 /// </summary>

21 /// <param name="s"></param>

22 /// <returns></returns>

23 public static string WriteName(string s)

24 {

25 return "欢迎您光临," + s;

26 }

27

28 public string WriteNoPara()

29 {

30 return "您使用的是无参数方法";

31 }

32 }

33}

34

35

36

2 应用于反射的例子

在ASPNET页面中加入以下函数:

1public void test1()

2 {

3 System.Reflection.Assembly ass;

4 Type type ;

5 object obj;

6 try

7 {

8 ass = System.Reflection.Assembly.LoadFile(@"d:\TestReflect.dll");

9 type = ass.GetType("Webtest.ReflectTest");//必须使用名称空间+类名称

10 System.Reflection.MethodInfo method = type.GetMethod("WriteString");//方法的名称

11 obj = ass.CreateInstance("Webtest.ReflectTest");//必须使用名称空间+类名称

12 string s = (string)method.Invoke(obj,new string[]{"jianglijun"}); //实例方法的调用

13

14 Response.Write(s+"<br>");

15 method = type.GetMethod("WriteName");//方法的名称

16 s = (string)method.Invoke(null,new string[]{"jianglijun"}); //静态方法的调用

17 Response.Write(s+"<br>");

18

19 method = type.GetMethod("WriteNoPara");//无参数的实例方法

20 s = (string)method.Invoke(obj,null);

21 Response.Write(s+"<br>");

22 method = null;

23 }

24 catch(Exception ex)

25 {

26 Response.Write(ex+"<br>");

27 }

28 finally

29 {

30 ass = null;

31 type = null;

32 obj = null;

33 }

34 }

35

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航