Pregunta

Estoy trabajando en una aplicación web semántica en la que se utiliza el ensamblaje de una ontología.Utilicé Rowlex OWLGrinder para convertir OWL en ensamblaje.

En la ontología hay algunas clases que tienen individuos, que se convierten en clases Enum que contienen algunas constantes en ensamblados .dll.Por ejemplo, una clase OWL llamada Idioma con un individuo llamado Inglés se convertirá en una clase llamada Idioma que contiene la constante Inglés.Language.English es una cadena que contiene el URI especificado para el individuo en la ontología.

texto alternativo http://img5.imageshack.us/img5/9308/73263054.jpg texto alternativo http://img5.imageshack.us/img5/2246/11461238.jpg

En este contexto, no puedo encontrar una manera de alternar entre constantes de clase de enumeración.Por ejemplo usando algo como esto:

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

    }

este código genera una excepción que indica que el idioma no es una enumeración.

Me preguntaba si alguien podría ayudarme con este problema.

¿Fue útil?

Solución

Como dice el error, no es una enumeración real.

Parece que necesitas reflexión:

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

Eso supone que no hay otros campos estáticos públicos en el tipo.Siempre puedes filtrar por tipo, etc.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top