我创建了一个名为input
的实例,其类型为:
public class TestInput
{
public int TesTInt { get; set; }
}
我在这个函数中使用它:
public static class TestClass
{
public static string TestFunction()
{
var testInput = new TestInput();
string res = ServicesManager.Execute<string>((object) testInput);
return res;
}
}
Execute
功能在这里:
public static OUT Execute<OUT>(object input)
where OUT : class
{
var method = //getting method by reflection
object[] arr = new object[] { input };
return method.Invoke(null, arr) as OUT; //Error is triggered here
}
我调用的方法就是这个:
public static string TestFunctionProxy(object[] input)
{
var serviceInput = input[0] as TestInput;
//rest of code
}
我收到了标题中的错误。 (XXX - “TestInput”类型)
发生了什么以及导致此错误的原因是什么?
注意:method
是静态的,因此第一个参数不需要实例。如果我错了,请纠正我。
感谢任何帮助。
编辑:使用更多代码更新了问题以获得完整示例。
答案 0 :(得分:6)
您正在向方法传递错误的参数。它想要一个对象[]而你正在给一个简单的对象。这是如何解决它:
object[] arr = new object[] { new object[] { input } };
'outer'对象[]是Invoke的参数,'inner'数组是你方法的参数。