Net反射技术应用解决对象不同版本方法不同参数的问题 【转载】
2010-04-13 13:41
821 查看
在调用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);
}
}
0
0
0
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);
}
}
0
0
0
相关文章推荐
- Net反射技术应用解决对象不同版本方法不同参数的问题
- Net反射技术应用解决对象不同版本方法不同参数的问题(转)
- .Net反射技术应用解决对象不同版本方法不同参数的问题
- .Net反射技术应用解决对象不同版本方法不同参数的问题
- .Net反射技术应用解决对象不同版本方法不同参数的问题
- 关于ClickOnce无法更新/Upgrade/下载 应用系统最新版本的问题和解决方法
- 老版本彻底解决Android 应用方法数不能超过65K的问题
- DotNetNuke(DNN)皮肤制作-通过JS文件解决不同IE版本对CSS解释不一致的问题
- fstream对象作为函数参数的问题汇总及解决方法
- 解决VS2013调试ASP.NET中无法调试的问题:当前不会命中断点。在 XXXX.dll 中找到了 XXX.cs 的副本,但是当前源代码与 XXXX.dll 中内置的版本不同。
- Springmvc接受不同对象的同名参数解决方法:
- Android中不同Activity之间传递自定义对象的参数问题的解决
- 解决asp.net mvc UpdateModel更新对象后出现null问题的方法
- ASP.NET AjaxPro的应用 .AjaxPro使用中“XXX未定义”的一种解决方法(转载的)
- 浏览器版本不同导致文件无法下载问题解决方法
- asp.net ajax应用中遇到的两个问题及解决方法
- 解决asp.net mvc UpdateModel更新对象后出现null问题的方法
- 讲解数据库孤立用户和对象名无效问题的解决方法(转载)
- 解决.net framework 4.0环境下遇到版本不同编译不通过的方法详解
- C#中??和?分别是什么意思? 在ASP.NET开发中一些单词的标准缩写 C#SESSION丢失问题的解决办法 在C#中INTERFACE与ABSTRACT CLASS的区别 SQL命令语句小技巧 JQUERY判断CHECKBOX是否选中三种方法 JS中!=、==、!==、===的用法和区别 在对象比较中,对象相等和对象一致分别指的是什么?