value__
可能在这里?
value__
MSN
ICQ
YahooChat
GoogleTalk
我运行的代码很简单:
namespace EnumReflection
{
enum Messengers
{
MSN,
ICQ,
YahooChat,
GoogleTalk
}
class Program
{
static void Main(string[] args)
{
FieldInfo[] fields = typeof(Messengers).GetFields();
foreach (var field in fields)
{
Console.WriteLine(field.Name);
}
Console.ReadLine();
}
}
}
答案 0 :(得分:6)
您可以找到更多here。海报甚至有示例代码,可以解决问题...只需插入 BindingFlags.Public | BindingFlags.Static 在GetFields()的括号之间。
通过使用反射,我认为我会获得优势并控制我的枚举困境。不幸的是,在枚举类型上调用GetFields会在返回的列表中添加一个名为value__的额外条目。在浏览了Enum的反编译后,我发现value__只是枚举用来保存所选成员值的特殊实例字段。我还注意到实际的枚举成员确实标记为静态。因此,要解决此问题,您需要做的就是调用GetFields并将BindingFlags设置为仅检索公共的静态字段