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 } };