首页 新闻 会员 周边 捐助

关于枚举值是数字开头的一个问题

0
悬赏园豆:100 [已解决问题] 解决于 2012-07-10 11:03

因为枚举值不能数字开头,所以,就找到了一篇 http://stackoverflow.com/questions/3916914/c-sharp-using-numbers-in-an-enum?answertab=active#tab-top  根据Description 来取值的,

 

但是,下面提供的 ((DescriptionAttribute)Attribute.GetCustomAttribute(
   
typeof(myEnum).GetFields().Single(x => x.GetValue(null)== enumValue),    
   
typeof(DescriptionAttribute))).Description
我一直报错。求enumValue 到底该填啥类型。

 

自己运行下哈。。

峰X的主页 峰X | 初学一级 | 园豆:8
提问于:2012-07-10 10:35
< >
分享
最佳答案
0

GetFields() 改成 GetFields(BindingFlags.Public | BindingFlags.Static)

异常是由于enum里会生成1个默认的instance field,因此x.GetValue(null)会报错。

收获园豆:100
水牛刀刀 | 大侠五级 |园豆:6350 | 2012-07-10 10:51

SO的答案我也改了,你可以再用上面的答案试试。

水牛刀刀 | 园豆:6350 (大侠五级) | 2012-07-10 10:54

@水牛刀刀: 

感谢帮忙。。。

var j = ((DescriptionAttribute) Attribute.GetCustomAttribute(
                typeof(MyEnum).GetFields(BindingFlags.Public | BindingFlags.Static).Single(x => x.GetValue(null) == MyEnum.OneA.ToString()),
                typeof (DescriptionAttribute))).Description;  

我这样写,会提示不包括任何序列,是不是我写错了?

峰X | 园豆:8 (初学一级) | 2012-07-10 10:57

@[↑起↑]: 还有个地方也改了:

.Single(x => (myEnum)x.GetValue(null)== enumValue)

注意没有ToString

水牛刀刀 | 园豆:6350 (大侠五级) | 2012-07-10 10:59

@[↑起↑]: 去SO上看最新的代码。

水牛刀刀 | 园豆:6350 (大侠五级) | 2012-07-10 11:01

@[↑起↑]: 主要是反射(reflection)和特性(attribute)的使用,稍微搜一下吧,园子里也有很多文章的。

水牛刀刀 | 园豆:6350 (大侠五级) | 2012-07-10 11:03

@水牛刀刀: 

去SO上看最新的代码。  哪个so?

峰X | 园豆:8 (初学一级) | 2012-07-10 11:04

@[↑起↑]: 就是你这个链接http://stackoverflow.com/questions/3916914/c-sharp-using-numbers-in-an-enum?answertab=active#tab-top 的网站,叫StackOverflow,简称SO。

水牛刀刀 | 园豆:6350 (大侠五级) | 2012-07-10 11:05
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册