Проблема зацикливания значений класса Enum - PullRequest
0 голосов
/ 02 июня 2009

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

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

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

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

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

    }

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

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

1 Ответ

3 голосов
/ 02 июня 2009

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

Звучит так, как будто тебе нужно отражение:

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

Предполагается, что в типе нет других открытых статических полей. Вы всегда можете отфильтровать по типу и т. Д.

...