0

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

在本体中有一些具有个体的类,它们是转换的 tp Enum 类,其中包含 .dll 程序集中的一些常量。例如,一个名为 Language 的 OWL 类和一个名为 English 的个体将被转换为一个名为 Language 的类,其中包含 English 常量。Language.English 是一个字符串,包含为本体中的个体指定的 URI。

替代文字 http://img5.imageshack.us/img5/9308/73263054.jpg 替代文字 http://img5.imageshack.us/img5/2246/11461238.jpg

在这种情况下,我找不到在枚举类常量之间循环的方法。例如使用这样的东西:

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

    }

此代码引发异常,指出 Language 不是 Enum。

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

4

1 回答 1

3

正如错误所说,它不是真正的枚举。

听起来你需要反思:

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

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

于 2009-06-02T10:32:07.253 回答