如果我只有Type实例,如何调用泛型方法?

时间:2011-07-24 08:43:43

标签: .net generics

class A
{
    public static void M<T>() { ... }
}

...
Type type = GetSomeType();

然后我需要致电A.M<T>() type == typeof(T) 反射?

2 个答案:

答案 0 :(得分:6)

是的,你需要反思。例如:

var method = typeof(A).GetMethod("M");
var generic = method.MakeGenericMethod(type);
generic.Invoke(null, null);

答案 1 :(得分:4)

因为在运行时已知类型,所以需要使用反射:

Type type = GetSomeType();
var m = typeof(A)
    .GetMethod("M", BindingFlags.Static | BindingFlags.Public)
    .MakeGenericMethod(type);
m.Invoke(null, null);