C#根据属性描述获取枚举值,获取枚举的属性描述,字符串转枚举

没有优化,凑合着用吧。需要using System.ComponentModel;


 /// <summary>
 /// 根据属性描述获取枚举值
 /// </summary>
 /// <typeparam name="T">类型</typeparam>
 /// <param name="des">属性说明</param>
 /// <returns>枚举值</returns>
 public static T GetEnum<T>(string des) where T : struct, IConvertible
 {
         Type type = typeof(T);
         if (!type.IsEnum)
         {
                 return default(T);
         }
         T[] enums = (T[])Enum.GetValues(type);
         T temp;
         if (!Enum.TryParse(des, out temp))
         {
                 temp = default(T);
         }
         for (int i = 0; i < enums.Length; i++)
         {
                 string name = enums[i].ToString();
                 FieldInfo field = type.GetField(name);
                 object[] objs = field.GetCustomAttributes(typeof(DescriptionAttribute), false);
                 if (objs == null || objs.Length == 0)
                 {
                         continue;
                 }
                 DescriptionAttribute descriptionAttribute = (DescriptionAttribute)objs[0];
                 string edes = descriptionAttribute.Description;
                 if (des == edes)
                 {
                         temp = enums[i];
                         break;
                 }
         }

         return temp;
 }

字符串转为枚举值:


                //字符串转为枚举
                public static T ToEnum<T>(this string enumName) where T : struct, IConvertible
                {
                        Type type = typeof(T);
                        if (!type.IsEnum)
                        {
                                return default(T);
                        }
                        T temp;
                        if (!Enum.TryParse<T>(enumName, out temp))
                        {
                                temp = default(T);
                        }
                        return temp;
                }

下面是获取枚举的属性描述的代码,来源于https://www.cnblogs.com/TanSea/p/6923743.html


        //获取属性描述
        public static string GetEnumDescription(Enum enumValue)
        {
            string value = enumValue.ToString();
            FieldInfo field = enumValue.GetType().GetField(value);
            object[] objs = field.GetCustomAttributes(typeof(DescriptionAttribute), false);    //获取描述属性
            if (objs == null || objs.Length == 0)    //当描述属性没有时,直接返回名称
            {
                return value;
            }

            DescriptionAttribute descriptionAttribute = (DescriptionAttribute)objs[0];
            return descriptionAttribute.Description;
        }

 

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值