C#反射实例讲解

1 创建用于反射使用的DLL

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

 1 None.gif using  System;
 2 None.gif
 3 None.gif namespace  Webtest
 4 ExpandedBlockStart.gif {
 5ExpandedSubBlockStart.gif /// <summary>
 6InBlock.gif /// ReflectTest 的摘要说明。
 7ExpandedSubBlockEnd.gif /// </summary>

 8InBlock.gif public class ReflectTest
 9ExpandedSubBlockStart.gif {
10InBlock.gif  public ReflectTest()
11ExpandedSubBlockStart.gif  {}
12InBlock.gif
13InBlock.gif  public string WriteString(string s)
14ExpandedSubBlockStart.gif  {
15InBlock.gif   return "欢迎您," + s;
16ExpandedSubBlockEnd.gif  }

17InBlock.gif
18ExpandedSubBlockStart.gif  /// <summary>
19InBlock.gif  /// dsajkjflasjdfalksdjfaskfd
20InBlock.gif  /// </summary>
21InBlock.gif  /// <param name="s"></param>
22ExpandedSubBlockEnd.gif  /// <returns></returns>

23InBlock.gif  public static string WriteName(string s)
24ExpandedSubBlockStart.gif  {
25InBlock.gif   return "欢迎您光临," + s;
26ExpandedSubBlockEnd.gif  }

27InBlock.gif
28InBlock.gif  public string WriteNoPara()
29ExpandedSubBlockStart.gif  {
30InBlock.gif   return "您使用的是无参数方法";
31ExpandedSubBlockEnd.gif  }

32ExpandedSubBlockEnd.gif }

33ExpandedBlockEnd.gif}

34 None.gif
35 None.gif
36 None.gif


2 应用于反射的例子

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

 1 None.gif public   void  test1()
 2 ExpandedBlockStart.gif   {
 3InBlock.gif   System.Reflection.Assembly ass;
 4InBlock.gif   Type type ;
 5InBlock.gif   object obj;
 6InBlock.gif   try
 7ExpandedSubBlockStart.gif   {
 8InBlock.gif    ass = System.Reflection.Assembly.LoadFile(@"d:\TestReflect.dll");
 9InBlock.gif    type = ass.GetType("Webtest.ReflectTest");//必须使用名称空间+类名称
10InBlock.gif    System.Reflection.MethodInfo method = type.GetMethod("WriteString");//方法的名称
11InBlock.gif    obj = ass.CreateInstance("Webtest.ReflectTest");//必须使用名称空间+类名称
12ExpandedSubBlockStart.gif    string s = (string)method.Invoke(obj,new string[]{"jianglijun"}); //实例方法的调用
13InBlock.gif   
14InBlock.gif    Response.Write(s+"<br>");
15InBlock.gif    method = type.GetMethod("WriteName");//方法的名称
16ExpandedSubBlockStart.gif    s = (string)method.Invoke(null,new string[]{"jianglijun"}); //静态方法的调用
17InBlock.gif    Response.Write(s+"<br>");
18InBlock.gif
19InBlock.gif    method = type.GetMethod("WriteNoPara");//无参数的实例方法
20InBlock.gif    s = (string)method.Invoke(obj,null);
21InBlock.gif    Response.Write(s+"<br>");
22InBlock.gif    method = null;
23ExpandedSubBlockEnd.gif   }

24InBlock.gif   catch(Exception ex)
25ExpandedSubBlockStart.gif   {
26InBlock.gif    Response.Write(ex+"<br>");
27ExpandedSubBlockEnd.gif   }

28InBlock.gif   finally
29ExpandedSubBlockStart.gif   {
30InBlock.gif    ass = null;
31InBlock.gif    type = null;
32InBlock.gif    obj = null;
33ExpandedSubBlockEnd.gif   }

34ExpandedBlockEnd.gif  }

35 None.gif

posted on 2011-08-03 18:08  Jack.leung 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/jack-liang/archive/2011/08/03/2126507.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值