获取枚举文本值和描述信息, 枚举转字典

 string name = Enum.GetName(value.GetType(), value);//枚举文本值

aa c= (aa)Enum.Parse(typeof(aa), str)//字符串转枚举

/// <summary>
        /// 返回枚举项的描述信息。
        /// </summary>
        /// <param name="value">要获取描述信息的枚举项。</param>
        /// <returns>枚举想的描述信息。</returns>
        public static string GetDescription(Enum value)
        {
            Type enumType = value.GetType();
            // 获取枚举常数名称。
            string name = Enum.GetName(enumType, value);
            if (name != null)
            {
                // 获取枚举字段。
                FieldInfo fieldInfo = enumType.GetField(name);
                if (fieldInfo != null)
                {
                    // 获取描述的属性。
                    DescriptionAttribute attr = Attribute.GetCustomAttribute(fieldInfo,
                        typeof(DescriptionAttribute), false) as DescriptionAttribute;
                    if (attr != null)
                    {
                        return attr.Description;
                    }
                }
            }
            return null;
        }
public enum aa
        {
            [Description("日志")]
            Log = 0,
            [Description("其他")]
            Other =1
        }



var a = GetDescription(aa.Log);
MessageBox.Show(a);

输出 日志

 枚举转字典

/// <summary>
        /// 枚举转字典(无需获取描述时使用)
        /// </summary>
        public IDictionary<int, string> EnumToDictionary(Type type)
        {
            string[] Names = System.Enum.GetNames(type);
            Array Values = System.Enum.GetValues(type);
            IDictionary<int, string> dic = new Dictionary<int, string>();
            for (int i = 0; i < Values.Length; i++)
            {
                dic.Add((int)Values.GetValue(i), Names[i].ToString());
            }
            return dic;
        }

地址:https://www.cnblogs.com/zhoushangwu/p/9581049.html

posted @ 2019-01-03 09:49  世人皆萌  阅读(286)  评论(0编辑  收藏  举报