【发布时间】:2009-04-29 05:46:01
【问题描述】:
我想创建一个接收Enum 类型的方法,并在一个数组中返回它的所有成员,如何创建这样的函数?
例如,我有这两个枚举:
public enum Family
{
Brother,
Sister,
Father
}
public enum CarType
{
Volkswagen,
Ferrari,
BMW
}
如何创建函数GetEnumList 使其返回
-
{Family.Brother, Family.Sister, Family.Father}第一种情况。 -
{CarType.Volkswagen, CarType.Ferrari, CarType.BMW}用于第二种情况。
我试过了:
private static List<T> GetEnumList<T>()
{
var enumList = Enum.GetValues(typeof(T))
.Cast<T>().ToList();
return enumList;
}
但我有一个InvalidOperationException:
System.InvalidOperationException:不能对 ContainsGenericParameters 为 true 的类型或方法执行后期绑定操作。 在 System.Reflection.RuntimeMethodInfo.ThrowNoInvokeException() 在 System.Reflection.RuntimeMethodInfo.Invoke(Object obj,BindingFlags invokeAttr,Binder binder,Object[] 参数,CultureInfo 文化,布尔型 skipVisibilityChecks) 在 System.Reflection.RuntimeMethodInfo.Invoke(Object obj,BindingFlags invokeAttr,Binder binder,Object[] 参数,CultureInfo 文化) 在 System.Reflection.MethodBase.Invoke(Object obj, Object[] 参数)
编辑:上面的代码工作正常——我得到一个异常的原因是因为分析器给我带来了这个错误。谢谢大家的解决方案。
【问题讨论】:
-
对我来说效果很好 - 你能发布调用代码吗?
-
是的,它工作正常——我发现我的分析器实际上给我造成了一个错误,因此导致了异常。