.Net反射技术应用解决对象不同版本方法不同参数的问题
2008-04-24 10:06
696 查看
在调用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);
}
}
关于该文章讨论请到http://202.102.53.36/user3/rookieport/main.asp?id=1377826
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);
}
}
关于该文章讨论请到http://202.102.53.36/user3/rookieport/main.asp?id=1377826
相关文章推荐
- .Net反射技术应用解决对象不同版本方法不同参数的问题
- .Net反射技术应用解决对象不同版本方法不同参数的问题
- Net反射技术应用解决对象不同版本方法不同参数的问题
- Net反射技术应用解决对象不同版本方法不同参数的问题(转)
- Net反射技术应用解决对象不同版本方法不同参数的问题 【转载】
- 关于ClickOnce无法更新/Upgrade/下载 应用系统最新版本的问题和解决方法
- 1:HTML 中 onclick 触发函数 xxx(param) 要传递对象参数的解决方法 2:LocalStorage存储JSON对象的问题 3:ajax请求传送参数为对象问题
- MVC扩展Url.Action方法解决复杂对象参数问题
- Android中不同Activity之间传递自定义对象的参数问题的解决
- Visual Studio2010"当前不会命中代码,源代码与原始版本不同"问题的解决方法
- Springmvc接受不同对象的同名参数解决方法:
- HttpClient4.5.2版本中POST提交中文参数时乱码问题解决方法
- Swagger2 (4)针对于相同url headers 参数不同映射不同的方法问题(已解决)
- 老版本彻底解决Android 应用方法数不能超过65K的问题
- Factory方法解决网站应用不同数据库的问题
- 浏览器版本不同导致文件无法下载问题解决方法
- fstream对象作为函数参数的问题汇总及解决方法
- 源代码与原始版本不同的解决方法
- Android 解决65535的限制 使用android-support-multidex解决Dex超出方法数的限制问题,让你的应用不再爆棚
- jsp之间传参数接受中文有乱码问题解决方法