1 创建用于反射使用的DLL
新建一个C#类库项目,拷贝源代码如下,编译生成DLL(假如DLL的文件名是TestReflect.dll)
1 using System;
using System;
 2
 3 namespace Webtest
namespace Webtest
 4 {
{
 5 /// <summary>
/// <summary>
 6 /// ReflectTest 的摘要说明。
 /// ReflectTest 的摘要说明。
 7 /// </summary>
 /// </summary>
 8 public class ReflectTest
 public class ReflectTest
 9 {
{
10 public ReflectTest()
  public ReflectTest()
11 {}
{}
12
13 public string WriteString(string s)
  public string WriteString(string s)
14 {
{
15 return "欢迎您," + s;
   return "欢迎您," + s;
16 }
  }
17
18 /// <summary>
/// <summary>
19 /// dsajkjflasjdfalksdjfaskfd
  /// dsajkjflasjdfalksdjfaskfd
20 /// </summary>
  /// </summary>
21 /// <param name="s"></param>
  /// <param name="s"></param>
22 /// <returns></returns>
  /// <returns></returns>
23 public static string WriteName(string s)
  public static string WriteName(string s)
24 {
{
25 return "欢迎您光临," + s;
   return "欢迎您光临," + s;
26 }
  }
27
28 public string WriteNoPara()
  public string WriteNoPara()
29 {
{
30 return "您使用的是无参数方法";
   return "您使用的是无参数方法";
31 }
  }
32 }
 }
33 }
}
2 应用于反射的例子
在ASPNET页面中加入以下函数:
1 public void test1()
public void test1()
 2 {
{
 3 System.Reflection.Assembly ass;
   System.Reflection.Assembly ass;
 4 Type type ;
   Type type ;
 5 object obj;
   object obj;
 6 try
   try
 7 {
{
 8 ass = System.Reflection.Assembly.LoadFile(@"d:\TestReflect.dll");
    ass = System.Reflection.Assembly.LoadFile(@"d:\TestReflect.dll");
 9 type = ass.GetType("Webtest.ReflectTest");//必须使用名称空间+类名称
    type = ass.GetType("Webtest.ReflectTest");//必须使用名称空间+类名称
10 System.Reflection.MethodInfo method = type.GetMethod("WriteString");//方法的名称
    System.Reflection.MethodInfo method = type.GetMethod("WriteString");//方法的名称
11 obj = ass.CreateInstance("Webtest.ReflectTest");//必须使用名称空间+类名称
    obj = ass.CreateInstance("Webtest.ReflectTest");//必须使用名称空间+类名称
12 string s = (string)method.Invoke(obj,new string[]{"jianglijun"}); //实例方法的调用
    string s = (string)method.Invoke(obj,new string[]{"jianglijun"}); //实例方法的调用
13 
   
14 Response.Write(s+"<br>");
    Response.Write(s+"<br>");
15 method = type.GetMethod("WriteName");//方法的名称
    method = type.GetMethod("WriteName");//方法的名称
16 s = (string)method.Invoke(null,new string[]{"jianglijun"}); //静态方法的调用
    s = (string)method.Invoke(null,new string[]{"jianglijun"}); //静态方法的调用
17 Response.Write(s+"<br>");
    Response.Write(s+"<br>");
18
19 method = type.GetMethod("WriteNoPara");//无参数的实例方法
    method = type.GetMethod("WriteNoPara");//无参数的实例方法
20 s = (string)method.Invoke(obj,null);
    s = (string)method.Invoke(obj,null);
21 Response.Write(s+"<br>");
    Response.Write(s+"<br>");
22 method = null;
    method = null;
23 }
   }
24 catch(Exception ex)
   catch(Exception ex)
25 {
{
26 Response.Write(ex+"<br>");
    Response.Write(ex+"<br>");
27 }
   }
28 finally
   finally
29 {
{
30 ass = null;
    ass = null;
31 type = null;
    type = null;
32 obj = null;
    obj = null;
33 }
   }
34 }
  }
 
                   
                   
                   
                   
                             本文介绍如何通过C#反射调用DLL中的方法。首先创建包含特定方法的DLL,然后在ASP.NET环境中利用反射加载该DLL并调用其方法,演示了不同类型的成员函数调用过程。
本文介绍如何通过C#反射调用DLL中的方法。首先创建包含特定方法的DLL,然后在ASP.NET环境中利用反射加载该DLL并调用其方法,演示了不同类型的成员函数调用过程。
           
       
           
                 
                 
                 
                 
                 
                
               
                 
                 
                 
                 
                
               
                 
                 扫一扫
扫一扫
                     
              
             
                   894
					894
					
 被折叠的  条评论
		 为什么被折叠?
被折叠的  条评论
		 为什么被折叠?
		 
		  到【灌水乐园】发言
到【灌水乐园】发言                                
		 
		 
    
   
    
   
             
            


 
            