因为枚举值不能数字开头,所以,就找到了一篇 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))).DescriptionenumValue
到底该填啥类型。
自己运行下哈。。
GetFields() 改成 GetFields(BindingFlags.Public | BindingFlags.Static)
异常是由于enum里会生成1个默认的instance field,因此x.GetValue(null)会报错。
SO的答案我也改了,你可以再用上面的答案试试。
@水牛刀刀:
感谢帮忙。。。
var j = ((DescriptionAttribute) Attribute.GetCustomAttribute(
typeof(MyEnum).GetFields(BindingFlags.Public | BindingFlags.Static).Single(x => x.GetValue(null) == MyEnum.OneA.ToString()),
typeof (DescriptionAttribute))).Description;
我这样写,会提示不包括任何序列,是不是我写错了?
@[↑起↑]: 还有个地方也改了:
.Single(x => (myEnum)x.GetValue(null)== enumValue)
注意没有ToString
@[↑起↑]: 去SO上看最新的代码。
@[↑起↑]: 主要是反射(reflection)和特性(attribute)的使用,稍微搜一下吧,园子里也有很多文章的。
@水牛刀刀:
去SO上看最新的代码。 哪个so?
@[↑起↑]: 就是你这个链接http://stackoverflow.com/questions/3916914/c-sharp-using-numbers-in-an-enum?answertab=active#tab-top 的网站,叫StackOverflow,简称SO。