如何将 ValueType arg 传递给 C# 反射中的方法?
How to pass a ValueType arg to a Method in C# reflection?
我的问题是一个方法需要一个 long
类型的 arg,我想通过反射来执行它。但是,MethodInfo
需要一个对象数组,而 long
是一个值类型,它不能转换为对象。
如何解决?
例如(只是一个例子)
class A
{
bool IsZero(long a)
{
return a == 0;
}
}
必须通过对象[]指定参数
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});
数组中元素个数和元素类型必须与参数个数和类型匹配(签名匹配)
我的问题是一个方法需要一个 long
类型的 arg,我想通过反射来执行它。但是,MethodInfo
需要一个对象数组,而 long
是一个值类型,它不能转换为对象。
如何解决?
例如(只是一个例子)
class A
{
bool IsZero(long a)
{
return a == 0;
}
}
必须通过对象[]指定参数
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});
数组中元素个数和元素类型必须与参数个数和类型匹配(签名匹配)