繁体   English   中英

具有反射的Invoke方法传递参数并接收返回值

[英]Invoke Method with reflection pass through parameters and receive a return value

您好,因为该问题描述了我试图通过反射来调用方法,这很好,而且如果它是空类型,也可以。 但字符串,布尔等不起作用。 还带有返回类型。 我一直找不到任何有用的参考。

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

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[]传递方法的parameters 注意,该方法返回一个object ,您只需要将其强制转换为结果类型即可。

调用TestString应该如下所示:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM