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#,枚举,描述
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Java使用entrySet方法获取Map集合中的元素
2022-08-06 17:41:05
C#采用OpenXml实现给word文档添加文字
2022-06-13 09:48:46
![](https://img.aspxhome.com/file/2023/0/100240_0s.jpg)
Java窗口精细全方位讲解
2023-03-05 15:35:15
![](https://img.aspxhome.com/file/2023/5/121435_0s.jpg)
Dubbo Consumer引用服务示例代码详解
2022-04-26 03:56:44
android 网络请求库volley方法详解
2022-01-01 01:34:30
![](https://img.aspxhome.com/file/2023/4/137194_0s.png)
Android自定义水平渐变进度条
2022-06-02 14:22:42
![](https://img.aspxhome.com/file/2023/6/137486_0s.jpg)
MyBatis通用的10种写法总结大全
2022-08-01 12:04:02
C# TSC打印二维码和条形码的实现方法
2021-10-06 14:39:53
![](https://img.aspxhome.com/file/2023/5/110185_0s.png)
基于C#实现手机号码归属地接口调用
2022-07-14 09:46:54
JAVAlogback日志管理详解
2023-01-11 22:33:54
![](https://img.aspxhome.com/file/2023/1/78861_0s.png)
Java实现删除排序数组中重复元素的方法小结【三种方法比较】
2023-09-28 15:21:48
springboot v2.0.3版本多数据源配置方法
2023-07-27 06:37:57
![](https://img.aspxhome.com/file/2023/5/57825_0s.png)
深入分析Java异常
2022-10-29 16:06:40
Java如何从json字符串中获取某个值详解
2023-11-18 12:18:12
![](https://img.aspxhome.com/file/2023/6/108386_0s.png)
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
![](https://img.aspxhome.com/file/2023/9/97859_0s.png)
JAVA抽象类,接口,内部类详解
2023-11-09 16:37:25