如何将 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});

数组中元素个数和元素类型必须与参数个数和类型匹配(签名匹配)