问题循环Enum类值

时间:2009-06-02 10:27:18

标签: rowlex

我正在开发一个语义Web应用程序,其中使用了本体的程序集。我使用Rowlex OWLGrinder将OWL转换为装配。

在本体中,有一些类具有个体,这些类被转换为包含.dll程序集中的一些常量的枚举类。例如,名为Language且名为English的OWL类将转换为包含English constant的名为Language的类。 Language.English是一个字符串,包含为本体中的个人指定的URI。

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

我在这个上下文中找不到在枚举类常量之间循环的方法。例如使用这样的东西:

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

    }

此代码抛出异常,说语言不是枚举。

我想知道是否有人会帮我解决这个问题。

1 个答案:

答案 0 :(得分:3)

正如错误所说,这不是一个真正的枚举。

听起来你需要反思:

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

假设该类型中没有其他公共静态字段。您可以随时按类型等进行过滤。