簡體   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