c#2.0 获取枚举对象的描述
/// <summary> /// 行政级别大小 /// </summary> public enum LevelPower { /// <summary> /// 员工 /// </summary> [Description("员工")] M1 = 1, /// <summary> /// 组长 /// </summary> [Description("组长")] M2 = 2, ....情人节祝福网页
如何获取这个[Description("员工")]内容呢,基于2.0的框架,
反射,不管那个版本都一样,记住一条 特性就是给反射用滴
其他地方你就想用都用不了
typeof(LevelPower).GetCustomAttributes(typeof(Description), false);
这样写枚举还有什么优势呢?如果你这个枚举是这样区分不同员工身份的,还不如直接写静态变量
public const string M1="员工";
public const string M2="组长";
尽量不要硬编码,这两种方式都是硬编码。。
/// <summary> /// 获取枚举值定义的属性 /// </summary> /// <param name="value"></param> /// <returns></returns> private static EnumAttribute GetAttribute(Enum value) { if (enumAttr.ContainsKey(value)) { EnumAttribute ea = enumAttr[value]; return ea; } else { FieldInfo field = value.GetType().GetField(value.ToString()); if (field == null) return null; EnumAttribute ea = null; object[] attributes = field.GetCustomAttributes(typeof(EnumAttribute), true); if (attributes != null && attributes.Length > 0) { ea = (EnumAttribute)attributes[0]; } enumAttr[value] = ea; return ea; } }
public enum FairBatchState { /// <summary> /// 生效 /// </summary> [EnumAttribute("生效")] Enable=1, /// <summary> /// 无效 /// </summary> [EnumAttribute("无效")] Disable=0 }