地平线

......

C#反射实例讲解

C#反射实例讲解

创建用于反射使用的DLL

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

 1 using System;  
 2 
 3 namespace 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 }  

 

应用于反射的例子

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

 

 1 public 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   }  

 

posted on 2012-03-21 16:35  烟灰缸  阅读(248)  评论(0编辑  收藏  举报

导航