[英]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" })
您正在尋找MethodInfo
的MakeGenericMethod
方法:
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.