我正在寻找一种通过枚举值名称对[Enum].GetValues(enumType)
(这是Array
)的结果进行排序的方法。
Public Enum TestEnum As Integer
Zero = 0
One = 1
Two = 2
End Enum
我在编译时不知道枚举类型,因此我无法在Cast(Of...)
上执行Array
,然后再使用OrderBy
扩展名。
在运行时,我只有一个Type
变量(称为enumType
)。
Dim enumType As Type = GetType(TestEnum) 'just for testing
Dim values As Array = [Enum].GetValues(enumType)
values
数组包含{零,一,二},我正在寻找一种方法来达到{一,二,零}(字母顺序)。请记住,您在编译时不了解TestEnum
,只有变量enumType
。
答案 0 :(得分:0)
我希望有一个更优雅的解决方案,但这会做到:
Dim enumType As Type = GetType(TestEnum)
Dim names As String() = [Enum].GetNames(enumType)
Dim values As Array = names.OrderBy(Of String)(Function(x As String) x) _
.Select(Of Object)((Function(x As String) [Enum].Parse(enumType, x))) _
.ToArray