Возможный загрузить Перечисление на основе имени строки?

Хорошо, я не думаю, что заголовок говорит это правильный..., но здесь идет:

У меня есть класс приблизительно с 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

5
задан Cooter 25 March 2010 в 03:19
поделиться

4 ответа

Чтобы получить базовый тип перечисления:

Type t = typeof(Hoohoo);
Type enumType = t.GetNestedType("aaa");
string enumName = Enum.GetName(enumType, 0);

Если вы хотите получить фактическое значение перечисления, вы можете использовать:

var enumValue = Enum.Parse(enumName, enumType);
4
ответ дан 14 December 2019 в 13:32
поделиться

Вы хотите преобразовать строку -> перечисление? Это должно помочь.

0
ответ дан 14 December 2019 в 13:32
поделиться

Используйте

aaa myEnum =(aaa) Enum.Parse(typeof(aaa), "a");
2
ответ дан 14 December 2019 в 13:32
поделиться

Просто имейте в виду, что Enum.Parse не строго типизирован ... Я считаю это будет настоящим ограничением в вашем сценарии. Как видно из примера Нгу, вам нужно будет преобразовать вывод.

0
ответ дан 14 December 2019 в 13:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: