簡體   English   中英

給定一個靜態方法,給出它的動態類型和c#中的參數

[英]Call a static method given it's dynamic type and arguments in c#

我有一個靜態方法的類:

public class MyClass {
    public static bool MyMethod<T>(string arg1) where T : class {
        // ...
    }
}

我怎么能調用那個,因為我知道我的T類型應該是MyNamespace.Data.Models.Student (通過變量提供),而arg1的值是讓我們說student

它是否與以下類似? 我不知道如何為它設置T類型。

Type.GetType("MyClass").GetMethod("MyMethod").Invoke(null, new object[] { arg1 = "student" })

您正在尋找MethodInfoMakeGenericMethod方法:

Type.GetType("MyClass")
    .GetMethod("MyMethod")
    .MakeGenericMethod(typeOfGenericArgument)
    .Invoke(null, new object[] { "student" })

首先,您應該獲取您的方法並使用MakeGenericMethod如下所示:

 var methodType =Type.GetType("MyClass").GetMethod("MyMethod", BindingFlags.Static |BindingFlags.Public);
 var argumentType = typeof (Student);
 var method = methodType.MakeGenericMethod(argumentType);
 method.Invoke(null, new object[] { "student" });

您需要在GetMethod指定BindingFlags.Static以獲取靜態方法。 完成后,您可以通過MethodInfo.MakeGenericMethod創建一個通用方法來構造具有正確類型的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM