【发布时间】:2011-07-24 16:48:09
【问题描述】:
class A
{
public static void M<T>() { ... }
}
...
Type type = GetSomeType();
然后我需要打电话给A.M<T>()type == typeof(T)。
反射?
【问题讨论】:
-
是的,这只能通过反射实现。
class A
{
public static void M<T>() { ... }
}
...
Type type = GetSomeType();
然后我需要打电话给A.M<T>()type == typeof(T)。
反射?
【问题讨论】:
是的,你需要反思。例如:
var method = typeof(A).GetMethod("M");
var generic = method.MakeGenericMethod(type);
generic.Invoke(null, null);
【讨论】:
因为在运行时类型是已知的,所以需要使用反射:
Type type = GetSomeType();
var m = typeof(A)
.GetMethod("M", BindingFlags.Static | BindingFlags.Public)
.MakeGenericMethod(type);
m.Invoke(null, null);
【讨论】: