给定一个静态方法,给出它在c#中的动态类型和参数

时间:2014-02-28 21:50:46

标签: c# reflection

我有一个静态方法的类:

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

我如何调用,因为我知道T的类型应为MyNamespace.Data.Models.Student(通过变量提供),arg1的值为{}} {} 1}}。

它是否与以下相似?我不确定如何为它设置student类型。

T

3 个答案:

答案 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创建一个通用方法来构造具有正确类型的方法。