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" })