zoukankan      html  css  js  c++  java
  • C#获取枚举的描述

        public enum StatusEnum
        {
            /// <summary>
            /// 运行中
            /// </summary>
            [Description("运行中")]
            Running = 1,
            /// <summary>
            /// 已关闭
            /// </summary>
            [Description("已关闭")]
            Stopped = 0
        }
    public class EnumHelper
        {
            #region 静态方法
            public static Dictionary<string, string> GetEnumDescription<T>()
            {
                Dictionary<string, string> dic = new Dictionary<string, string>();
     
                FieldInfo[] fields = typeof(T).GetFields();
     
                foreach (FieldInfo field in fields)
                {
     
                    if (field.FieldType.IsEnum)
                    {
     
                        object[] attr = field.GetCustomAttributes(typeof(DescriptionAttribute), false);
     
                        string description = attr.Length == 0 ? field.Name : ((DescriptionAttribute)attr[0]).Description;
     
                        dic.Add(field.Name, description);
     
                    }
                }
     
                return dic;
            }
     
            /// <summary>        
            /// 获取对应的枚举描述        
            /// </summary>        
            public static List<KeyValuePair<string, string>> GetEnumDescriptionList<T>()
            {
                List<KeyValuePair<string, string>> result = new List<KeyValuePair<string, string>>();
     
                FieldInfo[] fields = typeof(T).GetFields();
     
                foreach (FieldInfo field in fields)
                {
                    if (field.FieldType.IsEnum)
                    {
     
                        object[] attr = field.GetCustomAttributes(typeof(DescriptionAttribute), false);
     
                        string description = attr.Length == 0 ? field.Name : ((DescriptionAttribute)attr[0]).Description;
     
                        result.Add(new KeyValuePair<string, string>(field.Name, description));
     
                    }
     
                }
                return result;
            }
     
     
            /// <summary>
            /// 获取枚举的 值和描述
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <returns></returns>
            public static List<KeyValuePair<int, string>> GetEnumValueDescriptionList<T>()
            {
                List<KeyValuePair<int, string>> result = new List<KeyValuePair<int, string>>();
                FieldInfo[] fields = typeof(T).GetFields();
                foreach (FieldInfo field in fields)
                {
                    if (field.FieldType.IsEnum)
                    {
                        object[] attr = field.GetCustomAttributes(typeof(DescriptionAttribute), false);
                        string description = attr.Length == 0 ? field.Name : ((DescriptionAttribute)attr[0]).Description;
                        result.Add(new KeyValuePair<int, string>(Convert.ToInt32(field.GetValue(null)), description));
                    }
                }
     
                return result;
            }
     
            public static string GetDescriptionByEnumName<T>(string name)
            {
                try
                {
                    Dictionary<string, string> dic = GetEnumDescription<T>();
                    string description = dic[name];
                    return description;
                }
                catch (Exception ex)
                {
                    return "";
                }
            }
            #endregion
        }
  • 相关阅读:
    2017.8.15
    2017.8.14
    2017.8.12
    2017.8.11
    2017.8.10
    IE9下透明度设置无效
    IE7不支持Z-index问题
    IE9下支持jQuery
    IE9下支持css3的方法
    oninput、onpropertychange和onchange
  • 原文地址:https://www.cnblogs.com/wz122889488/p/5670433.html
Copyright © 2011-2022 走看看