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

转载 2006年06月07日 10:44:00
在调用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);
}
}

相关文章推荐

Android中不同Activity之间传递自定义对象的参数问题的解决

Android中不同Activity之间传递自定义对象的参数问题的解决        本人最近刚接触Android开发,在不同activity之间传递自己定义的数据结构时,出现了各种各样的问题,后面...

Factory方法解决网站应用不同数据库的问题

对于客户不同的需求,一个数据库网站系统应该可以配置多种数据库。比如可以选择使用Oracle或者是MySQL。运用java中的Factory方法可以解决这个问题。     首先,只有DAO涉及到数...

解决不同版本IE浏览器兼容问题

  • 2012年02月08日 16:59
  • 68KB
  • 下载

java语言基础(33)——面向对象(父类中没有无参构造编译报错——无法将类 xxx中的构造器 xxx应用到给定类型 实际参数列表和形式参数列表长度不同)

注意:以下代码是错的。 class Father { public Father(String name){ System.out.println("Father带参构造"); } } cl...

php面向对象(OOP)—不同php版本构造方法的继承和兼容

PHP4.x 版本: PHP 4.x 的构造函数名与类名相同。 子类的构造函数名与子类名相同(废话)。 在子类里父类的构造函数不会自动执行。 要在子类里执行父类的构造函数,必须...

使用纯net技术实现抓屏(包含连续抓图和鼠标的问题的解决方法)

之前转载了一篇关于api抓屏的实例,本次载的是老外Jason Hensley写的抓屏,实现方式与上次不同,可以方便大家对比 ''开发平台 VB.NET 2005  ''Description: ...

fstream对象作为函数参数的问题汇总及解决方法

今天想写一个多线程读取一个文本文件,需要fstream对象作为函数参数,出现了编译错误,查询了网上很多资料,在此汇总一下。         #include #include #include ...

php 中的重载技术——解决调用对象(或类)的未定义的属性或方法出错问题

重载的基本概念: 重载在通常的“面向对象的语言”中的含义:是指在一个类(或对象)中,有多个名字相同但是形参不同的方法的现象; 如:class A{ function f1(){} functi...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Net反射技术应用解决对象不同版本方法不同参数的问题
举报原因:
原因补充:

(最多只允许输入30个字)