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

ioW*_*int 9 .net enums enumeration

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

enum MyEnum
{
    enumMember1 = 100,
    enumMember2 = 10,
    enumMember3 = 50
}
Run Code Online (Sandbox Code Playgroud)

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

迭代Enum.GetNames或Enum.GetValues返回的数组.ToString()并对每个数组元素执行a 给出,

enumMember2, enumMember3, enumMember100. 
Run Code Online (Sandbox Code Playgroud)

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

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

Mag*_*nus 10

你可以使用反射:

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