在调用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

|