专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »DotNet » C#反射机制,反射使用实例 »正文

C#反射机制,反射使用实例

来源: 发布时间:星期二, 2008年9月16日 浏览:444次 评论:0
接上回
创建一个C#反射的实例
 
1 创建用于反射使用的DLL
新建一个C#类库项目,拷贝源代码如下,编译生成DLL(假如DLL的文件名是TestReflect.dll)
using System;
namespace CrazyCoder.Reflect
...{
  
/**//**//**//// <summary>
  
/// ReflectTest 的摘要说明。
  
/// </summary>

  public class ReflectTest
  
...{
  
public ReflectTest()
  
...{}
  
public string WriteString(string s)
  
...{
   
return "欢迎您," + s;
   }

  
/**//**//**//// <summary>
  
/// 反射的一个方
  
/// </summary>
  
/// <param name="s"></param>
  
/// <returns></returns>

  public static string WriteName(string s)
  
...{
   
return "欢迎您光临,Crazycoder.cn" + s;
   }

  
public string WriteNoPara()
  
...{
   
return "您使用的是无参数方法";
   }

}

}

2 应用于反射的例子

ASPNET页面中加入以下函数:

public void test1()
...{
     System.Reflection.Assembly ass;
     Type type ;
    
object obj;
    
try
    
...{
      ass
= System.Reflection.Assembly.LoadFile(@"d:TestReflect.dll");
      type
= ass.GetType("Webtest.ReflectTest");//必须使用名称空间+类名称
      System.Reflection.MethodInfo method = type.GetMethod("WriteString");//方法的名称
      obj = ass.CreateInstance("Webtest.ReflectTest");//必须使用名称空间+类名称
    string s = (string)method.Invoke(obj,new string[]...{"jianglijun"}); //实例方法的调用
     Response.Write(s+"<br>");
     method
= type.GetMethod("WriteName");//方法的名称
     s = (string)method.Invoke(null,new string[]...{"jianglijun"}); //静态方法的调用
     Response.Write(s+"<br>");
     method
= type.GetMethod("WriteNoPara");//无参数的实例方法
     s = (string)method.Invoke(obj,null);
     Response.Write(s
+"<br>");
     method
= null;
    }

   
catch(Exception ex)
   
...{
     Response.Write(ex
+"<br>");
    }

   
finally
   
...{
     ass
= null;
     type
= null;
     obj
= null;
    }

   }

0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: