调用带有反射的方法,通过参数传递并接收返回值

本文关键字:参数传递 返回值 反射的 方法 调用 | 更新日期: 2023-09-27 17:49:17

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

我有一个测试类,我用来调用一些测试方法。所有的空枪都很好用。但是其他的根本不叫。

internal class Test
{
    public static void Print()
    {
        Console.WriteLine("Test");
        Console.WriteLine("Testing an invoke method");
    }
    public static void CalcData()
    {
        Console.WriteLine("Test");
    }
    public static void DoSomething(int c, float f)
    {
        Console.WriteLine("Test");
    }
    public static string TestString(string s, int p, char f)
    {
        return "Happy Days";
    }
}

在我的主方法我将调用t.GetMethod("Print").Invoke(t, null);

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

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

调用带有反射的方法,通过参数传递并接收返回值

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