C#反射实例讲解

C#反射实例讲解

 

1 创建用于反射使用的DLL

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

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

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

17InBlock.gif
18ExpandedSubBlockStart.gifContractedSubBlock.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.gifContractedSubBlock.gif  dot.gif{
25InBlock.gif   return "欢迎您光临," + s;
26ExpandedSubBlockEnd.gif  }

27InBlock.gif
28InBlock.gif  public string WriteNoPara()
29ExpandedSubBlockStart.gifContractedSubBlock.gif  dot.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.gifContractedBlock.gif   dot.gif {
 3InBlock.gif   System.Reflection.Assembly ass;
 4InBlock.gif   Type type ;
 5InBlock.gif   object obj;
 6InBlock.gif   try
 7ExpandedSubBlockStart.gifContractedSubBlock.gif   dot.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.gifContractedSubBlock.gif    string s = (string)method.Invoke(obj,new string[]dot.gif{"jianglijun"}); //实例方法的调用
13InBlock.gif   
14InBlock.gif    Response.Write(s+"<br>");
15InBlock.gif    method = type.GetMethod("WriteName");//方法的名称
16ExpandedSubBlockStart.gifContractedSubBlock.gif    s = (string)method.Invoke(null,new string[]dot.gif{"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.gifContractedSubBlock.gif   dot.gif{
26InBlock.gif    Response.Write(ex+"<br>");
27ExpandedSubBlockEnd.gif   }

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

34ExpandedBlockEnd.gif  }

35 None.gif
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值