源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

通过特性(attribute)为枚举添加更多信息示例

  • 时间:2022-01-29 18:56 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:通过特性(attribute)为枚举添加更多信息示例
特性(Attribute)是将额外数据关联到一个属性(以及其他构造)的一种方式,而枚举则是在编程中最常用的一种构造,枚举本质上其实是一些常量值,相对于直接使用这些常量值,枚举为我们提供了更好的可读性。我们知道枚举的基础类型只能是值类型(byte、sbyte、short、ushort、int、uint、long 或 ulong),一般的情况下枚举能够满足我们的需求,但是有时候我们需要为枚举附加更多信息,仅仅只是使用这些值类型是不够的,这时通过对枚举类型应用特性可以使枚举带有更多的信息。 在枚举中使用DescriptionAttribute特性 首先引入:using System.ComponentModel 命名空间,下面是一个枚举应用了DescriptionAttribute特性:
[u]复制代码[/u] 代码如下:
enum Fruit {     [Description("苹果")]     Apple,     [Description("橙子")]     Orange,     [Description("西瓜")]     Watermelon }
下面是一个获取Description特性的扩展方法:
[u]复制代码[/u] 代码如下:
/// <summary> /// 获取枚举描述特性值 /// </summary> /// <typeparam name="TEnum"></typeparam> /// <param name="enumerationValue">枚举值</param> /// <returns>枚举值的描述/returns> public static string GetDescription<TEnum>(this TEnum enumerationValue)    where TEnum : struct, IComparable, IFormattable, IConvertible {    Type type = enumerationValue.GetType();    if (!type.IsEnum)    {   throw new ArgumentException("EnumerationValue必须是一个枚举值", "enumerationValue");    }    //使用反射获取该枚举的成员信息    MemberInfo[] memberInfo = type.GetMember(enumerationValue.ToString());    if (memberInfo != null && memberInfo.Length > 0)    {   object[] attrs = memberInfo[0].GetCustomAttributes(typeof(DescriptionAttribute), false);   if (attrs != null && attrs.Length > 0)   {  //返回枚举值得描述信息  return ((DescriptionAttribute)attrs[0]).Description;   }    }    //如果没有描述特性的值,返回该枚举值得字符串形式    return enumerationValue.ToString(); }
最后,我们就可以利用该扩展方法获取该枚举值得描述信息了:
[u]复制代码[/u] 代码如下:
public static void Main(string[] args) { //description = "橙子" string description = Fruit.Orange.GetDescription(); }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部