Как отсортировать результат Enum.GetValues, не зная самого Enum - PullRequest
0 голосов
/ 16 марта 2019

Я ищу способ сортировки результата [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.

1 Ответ

0 голосов
/ 16 марта 2019

Я надеялся на более элегантное решение, но это подойдет:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...