C#如何获取枚举的描述属性详解

 更新时间:2019年02月18日 08:33:51   作者:TanSea  
这篇文章主要给大家介绍了关于C#如何获取枚举的描述属性的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

前言

枚举为我看日常开发的可读性提供的非常好的支持,但是有时在使用枚举类型时,我们需要取名称和值,甚至有时候还需要取枚举类型的描述。通过反射,我们能获取到枚举类型的描述属性。

首先我们需要给枚举类型添加描述属性(属性都没有是不可能取到的),[Description]就是描述属性,使用这个属性,我们需要添加 using System.ComponentModel 引用。

public enum EnumSex
{
  /// <summary>
  /// 男
  /// </summary>
  [Description("男")]
  Male = 0,
  /// <summary>
  /// 女
  /// </summary>
  [Description("女")]
  Female = 1
}

接着我们需要写一个获取描述属性的方法,FieldInfo需要添加 using System.Reflection 引用,DescriptionAttribute需要添加 using System.ComponentModel 引用。

public string GetEnumDescription(Enum enumValue)
{
  string value = enumValue.ToString();
  FieldInfo field = enumValue.GetType().GetField(value);
  object[] objs = field.GetCustomAttributes(typeof(DescriptionAttribute), false);  //获取描述属性
  if (objs == null || objs.Length == 0)  //当描述属性没有时,直接返回名称
    return value;
  DescriptionAttribute descriptionAttribute = (DescriptionAttribute)objs[0];
  return descriptionAttribute.Description;
}

好了,现在我们可以获取到枚举的描述了。

string sex = GetEnumDescription(EnumSex.Female); //sex = "女"

同理,我们可以给枚举类型赋上其他类型的属性,比如Obsolete,在GetEnumDescription方法里面将DescriptionAttribute换成ObsoleteAttribute,一样可以取到属性。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

相关文章

  • C#计算字符串相似性的方法

    C#计算字符串相似性的方法

    这篇文章主要介绍了C#计算字符串相似性的方法,实例分析了C#计算字符串相似性的原理与算法实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • C#中的队列Queue<T>与堆栈Stack<T>

    C#中的队列Queue<T>与堆栈Stack<T>

    这篇文章介绍了C#中的队列Queue<T>与堆栈Stack<T>,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • c# winform treelistview的使用(treegridview)实例详解

    c# winform treelistview的使用(treegridview)实例详解

    这篇文章主要介绍了c# winform treelistview的使用(treegridview),本文通过实例代码给大家详细介绍,需要的朋友可以参考下
    2017-12-12
  • HTML文本框的值改变后触发后台代码的方法

    HTML文本框的值改变后触发后台代码的方法

    asp.net用日期插件,当选中一个日期时触发一个事件,以查询当前日期的数据。这是要跟数据库交互的。先贴出控件代码:
    2013-04-04
  • 探秘Unity游戏开发中的状态设计模式

    探秘Unity游戏开发中的状态设计模式

    这篇文章主要介绍了探秘Unity游戏开发中的状态设计模式,状态模式是Unity游戏开发中常用的一种设计模式,可以帮助开发者更好地管理游戏对象状态,提高游戏的可维护性和可扩展性
    2023-05-05
  • C# 合并GriewView相同列的小例子

    C# 合并GriewView相同列的小例子

    C# 合并GriewView相同列的小例子,需要的朋友可以参考一下
    2013-03-03
  • C# 如何合并和拆分PDF文件

    C# 如何合并和拆分PDF文件

    这篇文章主要介绍了C# 如何合并和拆分PDF文件,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下
    2021-01-01
  • C# 图片格式转换的实例代码

    C# 图片格式转换的实例代码

    这篇文章主要介绍了C# 图片格式转换的实例代码,文中讲解非常详细,帮助大家更好的理解和学习c#,感兴趣的朋友可以了解下
    2020-08-08
  • C#实现windows form倒计时的方法

    C#实现windows form倒计时的方法

    这篇文章主要介绍了C#实现windows form倒计时的方法,涉及C#桌面程序设计中时间操作的技巧,非常具有实用价值,需要的朋友可以参考下
    2015-04-04
  • 详解c# 类型转换

    详解c# 类型转换

    这篇文章主要介绍了c# 类型转换的相关资料,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以学习
    2020-07-07

最新评论