C# 调用给定的静态方法';c语言中的动态类型和参数#
我有一个带有静态方法的类:C# 调用给定的静态方法';c语言中的动态类型和参数#,c#,reflection,C#,Reflection,我有一个带有静态方法的类: public class MyClass { public static bool MyMethod<T>(string arg1) where T : class { // ... } } 您需要在GetMethod中指定BindingFlags.Static,以获取静态方法。完成此操作后,您可以通过创建一个泛型方法来构造具有适当类型的方法。首先,您应该获得您的方法并使用如下方法: var methodType =Ty
public class MyClass {
public static bool MyMethod<T>(string arg1) where T : class {
// ...
}
}
您需要在
GetMethod
中指定BindingFlags.Static
,以获取静态方法。完成此操作后,您可以通过创建一个泛型方法来构造具有适当类型的方法。首先,您应该获得您的方法并使用如下方法:
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" });
您正在寻找
MethodInfo
的MakeGenericMethod
方法:
Type.GetType("MyClass")
.GetMethod("MyMethod")
.MakeGenericMethod(typeOfGenericArgument)
.Invoke(null, new object[] { "student" })
可能重复除非有类似命名的实例方法使其不明确,否则不需要
Static
标志。
Type.GetType("MyClass")
.GetMethod("MyMethod")
.MakeGenericMethod(typeOfGenericArgument)
.Invoke(null, new object[] { "student" })