Domanda

Sto lavorando su un'applicazione web semantico in cui è provvisto sia utilizzato il montaggio di un'ontologia. Ho usato Rowlex OWLGrinder per la conversione di OWL per il montaggio.

Nel ontologia ci sono alcune classi aventi individui, che vengono convertiti tp classi Enum contenenti alcune costanti in DLL assiemi. Per esempio una classe OWL denominata lingua con un individuo di nome inglese, verrà convertito in una classe denominata Lingua contenente costante inglese. Il Language.English è una stringa contenente l'URI specificato per l'individuo nell'ontologia.

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

I questo contesto non riesco a trovare un modo per scorrere tra le costanti di classe enum. Ad esempio, utilizzando qualcosa di simile:

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

    }

questo codice genera un'eccezione dicendo che il linguaggio non è un Enum.

Mi chiedevo se qualcuno mi avrebbe aiutato in questo problema.

È stato utile?

Soluzione

Come dice l'errore, non è un vero e proprio enum.

Sembra che tu abbia bisogno di riflessione:

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

Questo supponendo non ci sono altri campi statici pubblici nel tipo. Si può sempre filtrare per tipo, ecc.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top