枚举帮助类
/// <summary> /// 枚举帮助类 /// </summary> public static class EnumHelper { /// <summary> /// 获取枚举注释 /// </summary> /// <typeparam name="T">枚举类型</typeparam> /// <param name="e">枚举值</param> /// <returns></returns> public static string ToComment<T>(this T e) where T : System.Enum { var t = typeof(T); //if (!t.IsEnum) return null; var name = t.GetEnumName(e); var fieldInfos = t.GetFields(); foreach (var fieldInfo in fieldInfos) { if (fieldInfo.Name == name) { var attr = fieldInfo.GetCustomAttributes(typeof(EnumNameAttribute), false).FirstOrDefault(); if (attr != null) { return ((EnumNameAttribute)attr).Comment; } } } return null; } /// <summary> /// 尝试通过注释获取枚举值 /// </summary> /// <typeparam name="T">转换枚举类型</typeparam> /// <param name="comment">注释</param> /// <param name="value">枚举值</param> /// <returns></returns> public static bool TryCommentToEnum<T>(string comment, out T value) where T : System.Enum { var t = typeof(T); //if (!t.IsEnum) //{ // value = default(T); // return false; //}; var fiList = t.GetFields(); foreach (var item in fiList) { var attr = item.GetCustomAttributes(typeof(EnumNameAttribute), false).FirstOrDefault(); if (attr != null) { if (((EnumNameAttribute)attr).Comment == comment) { value = (T)t.GetField(item.Name).GetValue(t); return true; } } } value = default(T); return false; } }
[AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = false)] public class EnumNameAttribute : Attribute { /// <summary> /// 说明 /// </summary> public string Comment { get; } public EnumNameAttribute(string comment) { Comment = comment; } }
/// <summary> /// 枚举项数据 /// </summary> public class EnumItem<T> { /// <summary> /// 枚举名称 /// </summary> public string Name { get; set; } /// <summary> /// 枚举值 /// </summary> public T Value { get; set; } /// <summary> /// 枚举注释 /// </summary> public string Comment { get; set; } public EnumItem() { Name = ""; Comment = ""; Value = default(T); } }