刚刚学习类反射,请帮忙看看哪里写错了?解决方案
刚刚学习类反射,请帮忙看看哪里写错了?C# codeusing Systemusing System.Collections.Genericusing Syst
刚刚学习类反射,请帮忙看看哪里写错了?
C# codeusing System;using System.Collections.Generic;using System.Text;using System.Reflection;namespace refent{ class Program { static void Main(string[] args) { Type tp = Type.GetType("FanShe"); object o = Activator.CreateInstance(tp); //创建实例 MethodInfo mi = tp.GetMethod("xxx"); //反射方法 object ret = mi.Invoke(o, null); //执行方法 string str = ret.ToString(); //获取结果 } public double Area() { return 2.0 * 3.0; } } class FanShe { }}
刚刚学习类反射,请帮忙看看哪里写错了?
[解决办法]C#
public Object Invoke (
Object obj,
Object[] parameters
)
参数
obj
对其调用方法或构造函数的对象。如果方法是静态的,则忽略此参数。如果构造函数是静态的,则此参数必须为空引用(在 Visual Basic 中为 Nothing) 或定义该构造函数的类的实例。
parameters
调用的方法或构造函数的参数列表。这是一个对象数组,这些对象与要调用的方法或构造函数的参数具有相同的数量、顺序和类型。如果没有任何参数,则 parameters 应为空引用(在 Visual Basic 中为 Nothing)。
如果此实例所表示的方法或构造函数采用 ref 参数(在 Visual Basic 中为 ByRef),使用此函数调用该方法或构造函数时,该参数不需要任何特殊属性。如果数组中的对象未用值来显式初始化,则该对象将包含该对象类型的默认值。对于引用类型的元素,该值为空引用(在 Visual Basic 中为 Nothing)。对于值类型的元素,该值为 0、0.0 或 false,具体取决于特定的元素类型。
返回值
一个对象,包含被调用方法的返回值,如果调用的是构造函数,则为空引用(在 Visual Basic 中为 Nothing)。
O是FanShe类的实例,null是方法xxx需要的参数数组,因为xxx无参数,所有为null
:-)
[解决办法]