我们有一个包含随机值的成员的枚举,比如说
enum MyEnum
{
enumMember1 = 100,
enumMember2 = 10,
enumMember3 = 50
}
我们无法按照定义的顺序遍历枚举成员! Enum.GetValues
和Enum.GetNames
都在内部对成员进行排序并给出结果!
迭代Enum.GetNames或Enum.GetValues返回的数组,并在每个数组元素上执行.ToString()
给我们,
enumMember2, enumMember3, enumMember100.
只是想知道是否有任何开箱即用的方法让enum成员按照他们的创建顺序获得?搜索,没有得到太多信息!谢谢!
P.S。我不想通过自定义属性完成这项工作! 在起草它时,我怀疑如果在对Enum成员进行排序之后生成了枚举的IL,那就去检查它吧!
答案 0 :(得分:10)
您可以使用反射:
var values = typeof(MyEnum).GetFields(BindingFlags.Public | BindingFlags.Static)
.Select (x => Enum.Parse(typeof(MyEnum), x.Name));