C#反射调用 - 类型'XXX'的对象无法转换为类型'System.Object []'

时间:2014-02-18 13:50:21

标签: 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 = 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是静态的,因此第一个参数不需要实例。如果我错了,请纠正我。

感谢任何帮助。

编辑:使用更多代码更新了问题以获得完整示例。

1 个答案:

答案 0 :(得分:6)

您正在向方法传递错误的参数。它想要一个对象[]而你正在给一个简单的对象。这是如何解决它:

object[] arr = new object[] { new object[] { input } };

'outer'对象[]是Invoke的参数,'inner'数组是你方法的参数。