我希望创建一个方法,该方法接收一个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:无法对包含泛型参数的类型或方法执行后期绑定操作。 at System.Reflection.RuntimeMethodInfo.ThrowNoInvokeException() at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks) at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters)
编辑:上述代码运行良好--我遇到异常的原因是性能分析器导致了这个错误。感谢大家提供的解决方案。