如何获取枚举的描述信息

方法一:   使用[Display(Name="描述")]特性  

复制代码
public namespace My.Test.Application
{

    /// <summary>
    /// 定义枚举
    /// </summary>
    public enum ExpendRecordStatusEnum
    {

        /// <summary>
        /// 正常销售
        /// </summary>
        [Display(Name = "正常销售")]
        NormalSale = 4,

        /// <summary>
        /// 退换
        /// </summary>
        [Display(Name = "退换单据")]
        Replacement = 5

    }

    /// <summary>
    /// 枚举帮助
    /// </summary>
    public static class EnumHelper
    {

        /// <summary>
        /// 获得枚举量的Display[name=""]特性
        /// </summary>
        /// <param name="eum"></param>
        /// <returns></returns>
        public static string GetDisplayName(this System.Enum eum)
        {
            var type = eum.GetType(); //先获取这个枚举的类型
            var field = type.GetField(eum.ToString()); //通过这个类型获取到值
            var obj = (DisplayAttribute)field.GetCustomAttribute(typeof(DisplayAttribute)); //得到特性
            return obj.Name ?? "";
        }


    }

    /// <summary>
    /// 枚举测试类
    /// </summary>
    public class TestEnum
    {

        /// <summary>
        /// 获取到字典描述值
        /// </summary>
        /// <returns></returns>
        public string SearchEnumDisplayName()
        {
            return ExpendRecordStatusEnum.NormalSale.GetDisplayName();
        }
    }


}
复制代码

 

 

方法二:   使用[DisplayName("描述")]特性

注意:在netcore 3.1中无法使用DisplayName特性

 

复制代码
public namespace My.Test.Application
{

    /// <summary>
    /// 定义枚举
    /// </summary>
    public enum ExpendRecordStatusEnum
    {

        /// <summary>
        /// 正常销售
        /// </summary>
        [DisplayName("正常销售")]
        NormalSale = 4,

        /// <summary>
        /// 退换
        /// </summary>
        [DisplayName("退换单据")]
        Replacement = 5

    }

    /// <summary>
    /// 枚举帮助
    /// </summary>
    public static class EnumHelper
    {

        /// <summary>
        /// 获得枚举量的DisplayName特性
        /// </summary>
        /// <param name="eum"></param>
        /// <returns></returns>
        public static string GetDisplayName(this System.Enum eum)
        {
            var type = eum.GetType(); //先获取这个枚举的类型
            var field = type.GetField(eum.ToString()); //通过这个类型获取到值
            var obj = (DisplayNameAttribute)field.GetCustomAttribute(typeof(DisplayNameAttribute)); //得到特性
            return obj.DisplayName ?? "";
        }


    }

    /// <summary>
    /// 枚举测试类
    /// </summary>
    public class TestEnum
    {

        /// <summary>
        /// 获取到字典描述值
        /// </summary>
        /// <returns></returns>
        public string SearchEnumDisplayName()
        {
            return ExpendRecordStatusEnum.NormalSale.GetDisplayName();
        }
    }


}
复制代码

 

posted @   姚小丹  阅读(485)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示