【问题标题】:How to call generic method if I have only Type instance?如果我只有 Type 实例,如何调用泛型方法?
【发布时间】:2011-07-24 16:48:09
【问题描述】:
class A
{
    public static void M<T>() { ... }
}

...
Type type = GetSomeType();

然后我需要打电话给A.M&lt;T&gt;()type == typeof(T)
反射?

【问题讨论】:

标签: .net generics


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-25
      • 2011-03-20
      • 1970-01-01
      • 2023-03-14
      相关资源
      最近更新 更多