无法按照定义的顺序检索枚举成员!

时间:2011-07-06 19:59:54

标签: .net enums enumeration

我们有一个包含随机值的成员的枚举,比如说

enum MyEnum
{
    enumMember1 = 100,
    enumMember2 = 10,
    enumMember3 = 50
}

我们无法按照定义的顺序遍历枚举成员! Enum.GetValuesEnum.GetNames都在内部对成员进行排序并给出结果!

迭代Enum.GetNames或Enum.GetValues返回的数组,并在每个数组元素上执行.ToString()给我们,

enumMember2, enumMember3, enumMember100. 

只是想知道是否有任何开箱即用的方法让enum成员按照他们的创建顺序获得?搜索,没有得到太多信息!谢谢!

P.S。我不想通过自定义属性完成这项工作! 在起草它时,我怀疑如果在对Enum成员进行排序之后生成了枚举的IL,那就去检查它吧!

1 个答案:

答案 0 :(得分:10)

您可以使用反射:

var values = typeof(MyEnum).GetFields(BindingFlags.Public | BindingFlags.Static)
                 .Select (x => Enum.Parse(typeof(MyEnum), x.Name));