博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【点滴积累】通过特性(Attribute)为枚举添加更多的信息
阅读量:4332 次
发布时间:2019-06-07

本文共 1918 字,大约阅读时间需要 6 分钟。

转:

 

 

  特性(Attribute)是将额外数据关联到一个属性(以及其他构造)的一种方式,而枚举则是在编程中最常用的一种构造,枚举本质上其实是一些常量值,相对于直接使用这些常量值,枚举为我们提供了更好的可读性。我们知道枚举的基础类型只能是值类型(byte、sbyte、short、ushort、int、uint、long 或 ulong),一般的情况下枚举能够满足我们的需求,但是有时候我们需要为枚举附加更多信息,仅仅只是使用这些值类型是不够的,这时通过对枚举类型应用特性可以使枚举带有更多的信息。

在枚举中使用DescriptionAttribute特性

  首先引入:命名空间,下面是一个枚举应用了特性:

1     enum Fruit2     {3         [Description("苹果")]4         Apple,5         [Description("橙子")]6         Orange,7         [Description("西瓜")]8         Watermelon9     }

下面是一个获取Description特性的扩展方法:

1         ///  2         /// 获取枚举描述特性值 3         ///  4         /// 
5 /// 枚举值 6 ///
枚举值的描述/returns> 7 public static string GetDescription
(this TEnum enumerationValue) 8 where TEnum : struct, IComparable, IFormattable, IConvertible 9 {10 Type type = enumerationValue.GetType();11 if (!type.IsEnum)12 {13 throw new ArgumentException("EnumerationValue必须是一个枚举值", "enumerationValue");14 }15 16 //使用反射获取该枚举的成员信息17 MemberInfo[] memberInfo = type.GetMember(enumerationValue.ToString());18 if (memberInfo != null && memberInfo.Length > 0)19 {20 object[] attrs = memberInfo[0].GetCustomAttributes(typeof(DescriptionAttribute), false);21 22 if (attrs != null && attrs.Length > 0)23 {24 //返回枚举值得描述信息25 return ((DescriptionAttribute)attrs[0]).Description;26 }27 }28 //如果没有描述特性的值,返回该枚举值得字符串形式29 return enumerationValue.ToString();30 }

 

最后,我们就可以利用该扩展方法获取该枚举值得描述信息了:

1     public static void Main(string[] args)2     {3         //description = "橙子"4         string description = Fruit.Orange.GetDescription();5     }

转载于:https://www.cnblogs.com/piaopiao7891/p/3361567.html

你可能感兴趣的文章
WebSocket & websockets
查看>>
openssl 升级
查看>>
ASP.NET MVC:通过 FileResult 向 浏览器 发送文件
查看>>
CVE-2010-2883Adobe Reader和Acrobat CoolType.dll栈缓冲区溢出漏洞分析
查看>>
使用正确的姿势跨域
查看>>
AccountManager教程
查看>>
Android学习笔记(十一)——从意图返回结果
查看>>
算法导论笔记(四)算法分析常用符号
查看>>
ultraedit激活
查看>>
总结(6)--- python基础知识点小结(细全)
查看>>
亿级曝光品牌视频的幕后设定
查看>>
ARPA
查看>>
JSP开发模式
查看>>
我的Android进阶之旅------>Android嵌入图像InsetDrawable的使用方法
查看>>
Detours信息泄漏漏洞
查看>>
win32使用拖放文件
查看>>
Android 动态显示和隐藏软键盘
查看>>
raid5什么意思?怎样做raid5?raid5 几块硬盘?
查看>>
【转】how can i build fast
查看>>
null?对象?异常?到底应该如何返回错误信息
查看>>