Хорошо, я не думаю, что заголовок говорит это правильный..., но здесь идет:
У меня есть класс приблизительно с 40 Перечислениями в нем. т.е.:
Class Hoohoo
{
public enum aaa : short
{
a = 0,
b = 3
}
public enum bbb : short
{
a = 0,
b = 3
}
public enum ccc : short
{
a = 0,
b = 3
}
}
Теперь скажите, что у меня есть Словарь строк и значений, и каждая строка является названием вышеупомянутых перечислений:
Dictionary<string,short>{"aaa":0,"bbb":3,"ccc":0}
Я должен изменить "aaa" в HooBoo.aaa для поиска 0. Может казаться, не находит способ сделать это, так как перечисление статично. Иначе я должен буду записать метод для каждого перечисления для связи строки с ним. Я могу сделать это, но это - код mucho для записи.
Спасибо, Cooter
Чтобы получить базовый тип перечисления:
Type t = typeof(Hoohoo);
Type enumType = t.GetNestedType("aaa");
string enumName = Enum.GetName(enumType, 0);
Если вы хотите получить фактическое значение перечисления, вы можете использовать:
var enumValue = Enum.Parse(enumName, enumType);
Вы хотите преобразовать строку -> перечисление? Это должно помочь.
Используйте
aaa myEnum =(aaa) Enum.Parse(typeof(aaa), "a");
Просто имейте в виду, что Enum.Parse не строго типизирован ... Я считаю это будет настоящим ограничением в вашем сценарии. Как видно из примера Нгу, вам нужно будет преобразовать вывод.