Проверьте класс System.Enum
.У него есть много полезных методов, таких как GetNames
или GetValues
, которые позволяют читать все записи типа enum
.В сочетании с некоторыми LINQ действительно просто обрабатывать их полуавтоматически.
Получив список записей enum, вы можете просто привести их к int
, чтобы получить числовое значение, или использовать Enum.GetName
или .ToString
, чтобы получить их имена.
Возможно, вы также захотите проверить в этой статье некоторые подсказки, не относящиеся к LINQ, что вы можете делать с методами System.Enum.xxx.
https://blogs.msdn.microsoft.com/haibo_luo/2005/08/28/get-names-and-values-of-enum-members/
Однако это поможет вам только в извлечении данных, которые непосредственно описывают тип enum
.Это означает, что CC.JLPT3 -> (int) 2 или CC.JLPT3 -> (строка) "JLPT3".Именно это потому, что определение enum
содержит только данные такого типа, и в enum
нет ничего более, что можно было бы прочитать.
Нет готовой магии, котораяавтоматически переведет
CC.JLPT3 is a string "N3"
или
CC.JLPT3 is a string "Japanese Language Proficiency Test Level N3"
Это пользовательские презентационные данные, совершенно не связанные с самим перечислением.
Чтобы получить какое-то волшебство, котороеупростит управление ими, вероятно, лучше всего поместить их в словарь для удобства чтения / использования / обновления. Или атрибутов в перечислении для повторного использования и простоты кодирования:
public enum CC
{
[ShortText("N5")]
[LongText("Japanese Language Proficiency Test Level N5")]
JLPT5 = 0,
[ShortText("N4")]
[LongText("Japanese Language Proficiency Test Level N4")]
JLPT4 = 1,
[ShortText("N3")]
[LongText("Japanese Language Proficiency Test Level N3")]
JLPT3 = 2,
...
Однако,Как бы круто это не выглядело, в коробке нет ничего подобного, и вам придется:
- реализовать атрибут ShortTextAttribute самостоятельно (легко)
- реализовать атрибут LongTextAttribute самостоятельно (легко)
- реализовать вспомогательный класс вспомогательных программ, который будет принимать значение CC и считывать его атрибут long / short для возврата текста (средний, но в Интернете есть готовые образцы)
Я не уверен, стоит ли это усилий, но наверняка это было бы хорошим упражнением.