Проблема с циклическим переключением значений класса Enum

StackOverflow https://stackoverflow.com/questions/938828

  •  06-09-2019
  •  | 
  •  

Вопрос

Я работаю над семантическим веб-приложением, в котором используется сборка онтологии.Я использовал Rowlex OWLGrinder для конвертации OWL в сборку.

В онтологии есть несколько классов, имеющих индивидуумы, которые преобразуются в классы Enum, содержащие некоторые константы в сборках .dll.Например, класс OWL с именем Language с индивидуальным именем English будет преобразован в класс с именем Language, содержащий константу English.Language.English — это строка, содержащая URI, указанный для человека в онтологии.

альтернативный текст http://img5.imageshack.us/img5/9308/73263054.jpg альтернативный текст http://img5.imageshack.us/img5/2246/11461238.jpg

В этом контексте я не могу найти способ циклически переключаться между константами класса перечисления.Например, используя что-то вроде этого:

    foreach (string item in Enum.GetNames(typeof(Language)))
    {

    }

этот код выдает исключение, говорящее, что Language не является Enum.

Мне было интересно, поможет ли мне кто-нибудь в этой проблеме.

Это было полезно?

Решение

Как говорится в ошибке, это не настоящее перечисление.

Похоже, вам нужно подумать:

var fields = typeof(Language).GetFields(BindingFlags.Static 
                                        | BindingFlags.Public);
foreach (string item in fields.Select(field => field.GetValue(null)))
{
     // ...
}

Это предполагает, что в этом типе нет других общедоступных статических полей.Вы всегда можете фильтровать по типу и т. д.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top