• c# enum 解析


    解析定义的枚举

     public enum OrderPaymentStatus
        {
            /// <summary>
            /// 未支付
            /// </summary>
            [Description("未支付")]
            No=1,
            /// <summary>
            /// 已支付
            /// </summary>
            [Description("已支付")]
            Yes
        }
    

    解析类

    public static class EnumHelper
        {
            private static Hashtable enumDesciption = EnumHelper.GetDescriptionContainer();
    
            public static string ToDescription(this Enum value)
            {
                if (value == null)
                {
                    return "";
                }
                Type type = value.GetType();
                string name = Enum.GetName(type, value);
                return EnumHelper.GetDescription(type, name);
            }
    
            public static Dictionary<int, string> ToDescriptionDictionary<TEnum>()
            {
                Type typeFromHandle = typeof(TEnum);
                Array values = Enum.GetValues(typeFromHandle);
                Dictionary<int, string> dictionary = new Dictionary<int, string>();
                foreach (Enum item in values)
                {
                    dictionary.Add(Convert.ToInt32(item), item.ToDescription());
                }
                return dictionary;
            }
    
            public static Dictionary<int, string> ToDictionary<TEnum>()
            {
                Type typeFromHandle = typeof(TEnum);
                Array values = Enum.GetValues(typeFromHandle);
                Dictionary<int, string> dictionary = new Dictionary<int, string>();
                foreach (Enum item in values)
                {
                    dictionary.Add(Convert.ToInt32(item), item.ToString());
                }
                return dictionary;
            }
    
            private static bool IsIntType(double d)
            {
                return (double)(int)d != d;
            }
    
            private static Hashtable GetDescriptionContainer()
            {
                EnumHelper.enumDesciption = new Hashtable();
                return EnumHelper.enumDesciption;
            }
    
            private static void AddToEnumDescription(Type enumType)
            {
                EnumHelper.enumDesciption.Add(enumType, EnumHelper.GetEnumDic(enumType));
            }
    
            private static Dictionary<string, string> GetEnumDic(Type enumType)
            {
                Dictionary<string, string> dictionary = new Dictionary<string, string>();
                FieldInfo[] fields = enumType.GetFields();
                FieldInfo[] array = fields;
                foreach (FieldInfo fieldInfo in array)
                {
                    if (fieldInfo.FieldType.IsEnum)
                    {
                        object[] customAttributes = fieldInfo.GetCustomAttributes(typeof(DescriptionAttribute), false);
                        dictionary.Add(fieldInfo.Name, ((DescriptionAttribute)customAttributes[0]).Description);
                    }
                }
                return dictionary;
            }
    
            private static string GetDescription(Type enumType, string enumText)
            {
                if (string.IsNullOrEmpty(enumText))
                {
                    return null;
                }
                if (!EnumHelper.enumDesciption.ContainsKey(enumType))
                {
                    EnumHelper.AddToEnumDescription(enumType);
                }
                object obj = EnumHelper.enumDesciption[enumType];
                if (obj != null && !string.IsNullOrEmpty(enumText))
                {
                    Dictionary<string, string> dictionary = (Dictionary<string, string>)obj;
                    return dictionary[enumText].Split('|')[0];
                }
                throw new ApplicationException("不存在枚举的描述");
            }
        }
    

      

  • 相关阅读:
    Java Socket编程(三)发送和接收深入
    Java温故知新 集合类
    DataTable到实体类的转换 中庸
    经典设计模式
    门面模式
    java经典反射机制(1)
    装饰模式
    单子模式
    sql经典题目(1)
    如何学习struts框架?
  • 原文地址:https://www.cnblogs.com/lkd3063601/p/10042277.html
Copyright © 2020-2023  润新知