软件编程
位置:首页>> 软件编程>> C#编程>> C#如何获取枚举的描述属性详解

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

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

标签: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,一样可以取到属性。

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

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com