Net反射技术应用解决对象不同版本方法不同参数的问题 【转载】

 在调用Office的时候,我们发现Office2003与Office2000的一个方法参数个数不同,这样导致我们不能够使用正常手段调用该方法,采用反射技术可以轻松解决问题。以下是我写的应用反射技术调用对象方法之简单原型。

using System;
using System.Reflection;
public class Invoker
{
public static void Main()
{
System.Type myType = System.Type.GetType("Demo");//取得系统类型
object obj = Assembly.GetAssembly(myType).CreateInstance("Demo");//创建实例
MethodInfo method = myType.GetMethod("PrintLine");//提取方法信息
method.Invoke(obj, new object[]{"Rookie", 27});//调用方法

method = myType.GetMethod("PrintLine2");//提取另外一个方法,实际应用中是根据不同版本取得同一个方法,而构造不同参数数组
method.Invoke(obj, new object[]{"Rookie", 27, "Rookie personal information."});//调用方法
}
}
public class Demo
{
public Demo()
{
}
//实际应用中老版本的方法
public void PrintLine(string name, int age)
{
System.Console.WriteLine("Name = " + name + "; Age = " + age.ToString());
}

//实际应用中升级版本的方法(名称相同,只是参数个数不同)
public void PrintLine2(string name, int age, string description)
{
System.Console.WriteLine("Name = " + name + "; Age = " + age.ToString() + "; Description = " + description);
}
}

posted on 2004-06-18 16:04 feeling 阅读(2499) 评论(1)  编辑 收藏

评论

#1楼  回复 引用 查看   

终于明白 那次升级
前辈为什么写了好几个功能差不多的方法
2008-10-13 18:40 | Allan_Green      

导航

<2012年2月>
2930311234
567891011
12131415161718
19202122232425
26272829123
45678910

公告

『姓名』:net&&java

『昵称』:feeling(生活不要借口)

『MSN』:whxleem@hotmail.com


昵称:feeling
园龄:7年7个月
粉丝:6
关注:0

搜索

 
 

常用链接

随笔分类

随笔档案

文章分类

相册

我朋友的blog

最新评论

阅读排行榜

评论排行榜

推荐排行榜