我的问题是,一个方法需要一个long
类型的参数,我想通过反射来执行它。但是,MethodInfo
需要一个对象数组,而long
是一个值类型,不能强制转换为对象。如何解决?
。(举个例子)
class A
{
bool IsZero(long a)
{
return a == 0;
}
}
参数必须通过object[]指定
A myClassAInstance = new A();
MethodInfo mi = myClassAInstance.GetType().GetMethod("IsZero");
long myLong = 23;
var result = (bool)mi.Invoke(myClassAInstance, new object[]{myLong});
myLong
自动装箱。
如果您有int
,您必须将其强制转换为long
long myInt = 11;
var result = (bool)mi.Invoke(myClassAInstance, new object[]{(long)myInt});
数组中元素的个数和元素的类型必须与参数的个数和类型匹配(signature match)