• 如何获取枚举的描述信息


    方法一:   使用[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();
            }
        }
    
    
    }
  • 相关阅读:
    JavaScript 对联广告、漂浮广告封装类(IE,FF,Opera,Safari,Chrome)
    一个程序员的梦想
    无刷新分页控件(原创)(jQuery+json+ashx)(Ajax)
    Ajax无刷新分页(jQuery+Json)
    飞信 .net接口
    STL学习小记起因
    C++山寨CSharp事件
    在win8上花了一上午的闲暇做的贪吃蛇sample, 顺便移植到了WPF...
    STL学习小记顺序容器
    最近做的一个store app音乐箱
  • 原文地址:https://www.cnblogs.com/yaoxiaodan/p/15263571.html
Copyright © 2020-2023  润新知