我正在开发一个语义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)))
{
}
此代码抛出异常,说语言不是枚举。
我想知道是否有人会帮我解决这个问题。
答案 0 :(得分:3)
正如错误所说,这不是一个真正的枚举。
听起来你需要反思:
var fields = typeof(Language).GetFields(BindingFlags.Static
| BindingFlags.Public);
foreach (string item in fields.Select(field => field.GetValue(null)))
{
// ...
}
假设该类型中没有其他公共静态字段。您可以随时按类型等进行过滤。