【发布时间】:2014-06-25 18:42:08
【问题描述】:
我有这个通用方法,我想确保指定的类型是枚举。
现在我明白我不能做类似where T:enum 的事情。但我想确保在运行时。
我知道我可以像 typeof(T).IsENum 那样做。但我想像这样使用反射
public static List<Tuple<T, Y>> Produce<T, Y>()
where T: struct, IConvertible
where Y: struct, IConvertible
{
var methodInfo = System.Reflection.MethodBase.GetCurrentMethod();
foreach(var typeInMethod in methodInfo.GetGenericArguments())
CheckTypeIsEnum(typeInMethod);
问题是 methodInfo.GetGenericArguments() 返回的类型不是我指定的枚举类型。但它们的类型是 T 和 Y 和 BaseType: {Name = "ValueType" FullName = "System.ValueType"}。
总结:如何获取方法中使用的所有泛型类型的数组?
附: .Net 4.5
【问题讨论】:
标签: c# .net generics reflection types