C#反射调用-类型为'的对象;XXX和x27;无法转换为类型';系统对象[]和#x27;
我创建了一个名为C#反射调用-类型为'的对象;XXX和x27;无法转换为类型';系统对象[]和#x27;,c#,reflection,C#,Reflection,我创建了一个名为input的实例,其类型为: public class TestInput { public int TesTInt { get; set; } } 我在这个函数中使用这个: public static class TestClass { public static string TestFunction() { var testInput = new TestInput(); string res = ServicesM
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;
}
}
我调用的方法是:
public static string TestFunctionProxy(object[] input)
{
var serviceInput = input[0] as TestInput;
//rest of code
}
我收到了标题中的错误。(XXX-“测试输入”类型)
发生了什么,是什么导致了这个错误
注意:方法
是静态的,因此第一个参数不需要实例。如果我错了,请纠正我
感谢您的帮助
编辑:用更多的代码更新了问题,以获得完整的示例。您向方法传递了错误的参数。它需要一个对象[],而您正在给它一个simpe对象。这是如何修复它的:
object[] arr = new object[] { new object[] { input } };
“外部”对象[]是Invoke的参数,“内部”数组是方法的参数。如果提供一个简短但完整的示例,将更容易为您提供帮助。我还怀疑错误消息中没有包含“XXX”。我们不知道你是从哪里得到错误的…@JonSkeet Fair,将会更新这个问题。铸造为对象和铸造为对象数组是两件不同的事情。您的方法希望接收哪些确切的参数类型?您正试图准确地调用哪些方法?它的参数是什么?这里没有足够的信息。请记住,反射不是魔法-确保您的参数都与编译时参数列表匹配。@JonSkeet用更多信息更新了我的问题。
object[] arr = new object[] { new object[] { input } };