我有一个静态方法的类:
public class MyClass {
public static bool MyMethod<T>(string arg1) where T : class {
// ...
}
}
我如何调用,因为我知道T
的类型应为MyNamespace.Data.Models.Student
(通过变量提供),arg1
的值为{}} {} 1}}。
它是否与以下相似?我不确定如何为它设置student
类型。
T
答案 0 :(得分:4)
您正在寻找MakeGenericMethod
的{{1}}方法:
MethodInfo
答案 1 :(得分:3)
首先,你应该得到你的方法并使用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" });
答案 2 :(得分:1)
您需要在BindingFlags.Static
中指定GetMethod
才能获得静态方法。完成后,您可以通过MethodInfo.MakeGenericMethod创建一个通用方法来构造具有正确类型的方法。