Frage

Ich arbeite an einer semantischen Web-Anwendung, bei der Montage einer Ontologie verwendet wird beeing. Ich benutzte Rowlex OWLGrinder für OWL Montage konvertieren.

In der Ontologie gibt es einige Klassen Individuen, die die tp Enum-Klassen umgewandelt werden einige Konstanten in DLL-Baugruppen enthalten. Zum Beispiel wird eine OWL Klasse Sprache mit einem individuellen Namen Englisch genannt, zu einer Klasse umgewandelt wird Englisch benannte Konstante Sprache enthält. Die Language.English ist eine Zeichenfolge, die URI für den einzelnen in der Ontologie enthalten.

alt text http://img5.imageshack.us/img5/9308/73263054 .jpg alt text http://img5.imageshack.us/img5/2246/11461238.jpg

I In diesem Zusammenhang kann ich nicht einen Weg, um zwischen Enum Klasse Konstanten finden. Zum Beispiel mit so etwas wie folgt aus:

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

    }

Dieser Code wirft eine Ausnahme, die Sprache zu sagen ist kein Enum.

Ich habe mich gefragt, ob jemand mir in diesem Problem helfen würde.

War es hilfreich?

Lösung

Wie der Fehler sagt, es ist nicht eine echte Enum.

Es klingt wie Sie Reflexion brauchen:

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

Das ist vorausgesetzt, keine anderen öffentlichen statischen Felder in der Art gibt. Man könnte immer Filtern nach Typ etc.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top