C#方法 枚举

示例枚举

     public enum memberType
        {
            [Description("Person")]
            个人 = 1,
            [Description("Company")]
            企业 = 2,
        }

枚举工具类

       /// <summary>
        /// 根据字符串获取枚举描述
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="Name"></param>
        /// <returns></returns>
        public static string GetDescByName<T>(string Name)
        {
            var obj = Enum.Parse(typeof(T), Name) as Enum;
            return obj != null && obj.GetType().IsEnum ? obj.GetDesc() : string.Empty;
        }


        /// <summary>
        /// 根据字符串获取枚举描述
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="Name"></param>
        /// <returns></returns>
        public static string GetDescByNumber<T>(int number)
        {
            var obj = Enum.Parse(typeof(T), number.ToString()) as Enum;
            var dic = obj.GetDescAll();
            return obj != null && obj.GetType().IsEnum && dic != null && dic.ContainsKey(number) ? dic[number] : string.Empty;
        }


        #region //扩展函数

        /// <summary>
        /// 查询枚举name
        /// </summary>
        /// <param name="i"></param>
        /// <returns></returns>
        public static string GetEnumName(this Enum obj)
        {
            return obj.ToString();
        }
        /// <summary>
        /// 查询枚举value
        /// </summary>
        /// <param name="name"></param>
        /// <returns></returns>
        public static int GetEnumValue(this Enum obj)
        {
            return obj.GetHashCode();
        }


        /// <summary>
        /// 查询枚举描述
        /// </summary>
        /// <param name="i"></param>
        /// <returns></returns>
        public static string GetDesc(this Enum obj)
        {
            var Type = obj.GetType();
            FieldInfo[] fieldinfos = Type.GetFields();
            foreach (FieldInfo field in fieldinfos)
            {
                if (field.FieldType.IsEnum && Enum.Parse(Type, field.Name).GetHashCode() == obj.GetHashCode())
                {
                    Object[] objs = field.GetCustomAttributes(typeof(DescriptionAttribute), false);
                    return ((DescriptionAttribute)objs[0]).Description;
                }
            }
            return "";
        }
        /// <summary>
        /// 获取枚举的所有描述
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <returns></returns>
        public static Dictionary<int, string> GetDescAll(this Enum obj)
        {
            var Type = obj.GetType();
            if (Type.IsEnum)
            {
                var dic = new Dictionary<int, string>();
                FieldInfo[] fieldinfos = Type.GetFields();
                foreach (FieldInfo field in fieldinfos)
                {
                    if (field.FieldType.IsEnum)
                    {
                        Object[] objs = field.GetCustomAttributes(typeof(DescriptionAttribute), false);
                        dic.Add(Enum.Parse(Type, field.Name).GetHashCode(), ((DescriptionAttribute)objs[0]).Description);
                    }
                }
                return dic;
            }
            else
            {
                return null;
            }
        }


        /// <summary>
        /// 获取枚举的所有值
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <returns></returns>
        public static Dictionary<int, string> GetAllName(this Enum obj)
        {
            var Type = obj.GetType();
            if (Type.IsEnum)
            {
                var dic = new Dictionary<int, string>();
                FieldInfo[] fieldinfos = Type.GetFields();
                foreach (FieldInfo field in fieldinfos)
                {
                    if (field.FieldType.IsEnum)
                    {
                        Object[] objs = field.GetCustomAttributes(typeof(DescriptionAttribute), false);
                        dic.Add(Enum.Parse(Type, field.Name).GetHashCode(), field.Name);
                    }
                }
                return dic;
            }
            else
            {
                return null;
            }
        }


        /// <summary>
        /// 获取枚举所有的描述值
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        public static List<string> GetDescAllName(this Enum obj)
        {
            var dic = obj.GetDescAll();
            return dic != null ? dic.Select(o => o.Value).ToList() : null;
        }

        /// <summary>
        /// 根据枚举值输出特定类型
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="number"></param>
        /// <returns></returns>
        public static JsonR_Simple GetJsonrSimple<T>(int number)
        {
            var obj = Enum.Parse(typeof(T), number.ToString()) as Enum;
            var dic = obj.GetDescAll();
            if (obj != null && obj.GetType().IsEnum && dic != null && dic.ContainsKey(number))
            {
                return new JsonR_Simple(number, dic[number]);
            }
            return new JsonR_Simple();
        }


        #endregion
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值