使用反射调用方法传递参数并接收返回值

时间:2016-06-26 10:36:11

标签: c# reflection

你好,因为问题描述我试图通过反射调用一个方法,这很好,如果它是一个void类型的话。但是字符串,bool等不起作用。也有返回类型。我还没有找到任何有用的参考资料。

我有一个测试类,我曾经调用过一些测试方法。所有虚空的都工作得很好。但其他人根本没有打电话。

t.GetMethod("Print").Invoke(t, null);

在我的主要方法中,我会打电话给/location/to/something

但我不确定如何调用传递参数甚至获取返回类型。

对此的一些见解将不胜感激。

1 个答案:

答案 0 :(得分:2)

查看MethodInfo.Invoke

的签名
public object Invoke(
    object obj,
    object[] parameters
)

您需要在parameters object[]中传递方法的参数。请注意,该方法返回object,您只需将其强制转换为结果类型。

TestString的调用应如下所示:

var parameters = new object[]{"A string", 10, 'a'};
string result = (string) t.GetMethod("Print").Invoke(t, parameters);