比较有用的枚举方法

        /// <summary>
        /// 将骆驼命名法的单词转为句子. 如NotSent-->Not Sent
        /// </summary>
        /// <param name="str"></param>
        /// <returns></returns>
        public static String ConvertCamelToSentence(string str)
        {
            if (string.IsNullOrEmpty(str)) { return str; }
            str = str.Trim();
            StringBuilder sb = new StringBuilder("");
            for (int i = 0; i < str.Length; i++)
            {
                string s = str.Substring(i, 1);
                if (s[0] >= 'a' && s[0]  <= 'z'){
                    sb.Append(s);
                }else
                {
                    sb.Append(" "+s);
                }
            }
            return sb.ToString().Trim();
        }

        public static String GetEnumString(Type e) {
            return Enum.GetName(e, 1);
        }


        /// <summary>
        /// 得到某一枚举的值对应的描述/定义字符串
        /// 如: [Description("Sent Failed")]
        ///      Failed=-1,                 
        ///      即得到  value:-1, desc:Sent Failed (如没有定义Description, 将得到Failed)
        /// </summary>
        /// <param name="enumType">枚举类型</param>
        /// <param name="enumValue">枚举的值,object类型只是避免转换,其实只能是int类型</param>
        /// <returns></returns>
        public static String GetEnumDescByValue(Type enumType, object enumValue) {
            NameValueCollection nvc = GetNVCFromEnumValue(enumType);
            foreach (string s in nvc.AllKeys)
            {
                if (nvc[s] == enumValue.ToString())
                    return s;
            }
            return null;
        }

        ///  从枚举类型和它的特性读出并返回一个键值对
        ///   Type,该参数的格式为typeof(需要读的枚举 类型)
        ///   键值对
        public static NameValueCollection GetNVCFromEnumValue(Type enumType)
        {
            NameValueCollection nvc = new NameValueCollection();
            Type typeDescription = typeof(DescriptionAttribute);
            System.Reflection.FieldInfo[] fields = enumType.GetFields();
            string strText = string.Empty;
            string strValue = string.Empty;
            foreach (FieldInfo field in fields)
            {
                if (field.FieldType.IsEnum)
                {
                    strValue = ((int)enumType.InvokeMember(field.Name, BindingFlags.GetField, null, null, null)).ToString();
                    object[] arr = field.GetCustomAttributes(typeDescription, true);
                    if (arr.Length > 0)
                    {
                        DescriptionAttribute aa = (DescriptionAttribute)arr[0];
                        strText = aa.Description;
                    }
                    else
                    {
                        strText = field.Name;
                    }
                    nvc.Add(strText, strValue);
                }
            }
            return nvc;
        }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值