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

作者:TanSea 时间:2023-02-23 13:49:59 

前言

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

首先我们需要给枚举类型添加描述属性(属性都没有是不可能取到的),[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,一样可以取到属性。

来源:https://www.cnblogs.com/TanSea/p/6923743.html

标签:c#,枚举,描述
0
投稿

猜你喜欢

  • Java使用entrySet方法获取Map集合中的元素

    2022-08-06 17:41:05
  • C#采用OpenXml实现给word文档添加文字

    2022-06-13 09:48:46
  • Java窗口精细全方位讲解

    2023-03-05 15:35:15
  • Dubbo Consumer引用服务示例代码详解

    2022-04-26 03:56:44
  • android 网络请求库volley方法详解

    2022-01-01 01:34:30
  • Android自定义水平渐变进度条

    2022-06-02 14:22:42
  • MyBatis通用的10种写法总结大全

    2022-08-01 12:04:02
  • C# TSC打印二维码和条形码的实现方法

    2021-10-06 14:39:53
  • 基于C#实现手机号码归属地接口调用

    2022-07-14 09:46:54
  • JAVAlogback日志管理详解

    2023-01-11 22:33:54
  • Java实现删除排序数组中重复元素的方法小结【三种方法比较】

    2023-09-28 15:21:48
  • springboot v2.0.3版本多数据源配置方法

    2023-07-27 06:37:57
  • 深入分析Java异常

    2022-10-29 16:06:40
  • Java如何从json字符串中获取某个值详解

    2023-11-18 12:18:12
  • Java内存模型可见性问题相关解析

    2023-01-15 06:22:06
  • java使用Socket类接收和发送数据

    2021-05-26 15:28:47
  • C#反射之基础应用实例总结

    2023-08-29 04:50:56
  • Android 7.0 Nougat不得不知的11项新功能

    2021-06-12 22:50:07
  • Android自定义控件ListView下拉刷新的代码

    2023-04-07 23:51:06
  • JAVA抽象类,接口,内部类详解

    2023-11-09 16:37:25
  • asp之家 软件编程 m.aspxhome.com