EnumHelper

 

 

  public static class EnumHelper
    {
        public static string GetEnumDescription(Enum obj)
        {
            FieldInfo fi = obj.GetType().GetField(obj.ToString());
            DescriptionAttribute[] arrDesc = (DescriptionAttribute[])fi.GetCustomAttributes(typeof(DescriptionAttribute), false);
            if (arrDesc == null)
            { return string.Empty; }
            else
            {
                return arrDesc[0].Description;
            }
        }
        /// <summary>  
        /// 枚举转字典集合  
        /// </summary>  
        /// <typeparam name="T">枚举类名称</typeparam>  
        /// <param name="keyDefault">默认key值</param>  
        /// <param name="valueDefault">默认value值</param>  
        /// <returns>返回生成的字典集合</returns> 
        public static Dictionary<int, string> EnumListDic<T>(int keyDefault, string valueDefault = "")
        {
            Dictionary<int, string> dicEnum = new Dictionary<int, string>();
            Type enumType = typeof(T);
            if (!enumType.IsEnum)
            {
                return dicEnum;
            }
            if (!string.IsNullOrEmpty(valueDefault))
            {
                dicEnum.Add(keyDefault, valueDefault);
            }
            string[] fieldstrs = Enum.GetNames(enumType);
            foreach (var item in fieldstrs)
            {
                string description = string.Empty;
                var field = enumType.GetField(item);
                object[] arr = field.GetCustomAttributes(typeof(DescriptionAttribute), true);
                if (arr != null && arr.Length > 0)
                {
                    description = ((DescriptionAttribute)arr[0]).Description;
                }
                else
                {
                    description = item;
                }
                dicEnum.Add((int)Enum.Parse(enumType, item), description);
            }
            return dicEnum;
        }
        /// <summary>
        /// 根据枚举的值获取枚举名称
        /// </summary>
        /// <typeparam name="T">枚举类型</typeparam>
        /// <param name="status">枚举的值</param>
        /// <returns></returns>
        public static string GetEnumName<T>(this int status)
        {
            try
            {
                return Enum.GetName(typeof(T), status);
            }
            catch (Exception ex)
            {
                return status.ToString();
            }
        }
        /// <summary>
        /// 获取枚举名称集合
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <returns></returns>
        public static string[] GetNamesArr<T>()
        {
            return Enum.GetNames(typeof(T));
        }
    }
    public enum Sex
    { 
        男=0,
        女=1,
        未知=99
    }
    public  class EnumExample
    {
        public void Example()
        {
            int a = (int)Sex.男;
            Console.WriteLine("将枚举转换为整形:"+a);

            string b = Sex.男.ToString();
            Console.WriteLine("将枚举转化为字符串:"+b);

            Sex c = (Sex)Enum.Parse(typeof(Sex), "");
            Console.WriteLine("将字符串转为枚举:" + c.ToString());

            Sex d = (Sex)1;
            Console.WriteLine("将整形转化为枚举:"+d.ToString());

            string e = Enum.GetName(typeof(Sex), 1);
            Console.WriteLine("将整数转为字符串:"+e);

            foreach (Sex s  in Enum.GetValues(typeof(Sex)))
            {
                Console.WriteLine("循环遍历枚举:"+s.ToString()+"="+(int)s);
            }
        }
    }

 

posted on 2019-09-02 22:47  欢笑一声  阅读(131)  评论(0)    收藏  举报

导航