【 学习日记__枚举 】
知识点: 枚举、枚举自定义属性、位标志
效果图:

提要:1.类标记[flags]
2.定义特性[SetArrtibute("北京", "五一"), DescriptionAttribute("北京")]
[Flags] public enum EnumState { /// <summary> /// 五一游北京=1 /// </summary> //[SetArrtibute("北京")] [SetArrtibute("北京", "五一"), DescriptionAttribute("北京")] beijing = 1, /// <summary> /// 十一游上海=2 /// </summary> [SetArrtibute("上海", "十一"), DescriptionAttribute("上海")] shanghai = 2, /// <summary> /// 春节游福建=4 /// </summary> [SetArrtibute("福建", "春节"), DescriptionAttribute("福建")] fujian = 4, /// <summary> /// 春节游巴黎=8 /// </summary> [SetArrtibute("巴黎", "4.25"), DescriptionAttribute("法国")] bali = 8, /// <summary> /// 春节游迪拜=16 /// </summary> [SetArrtibute("迪拜", "12.12"), DescriptionAttribute("迪拜")] dibai = 16 }
1.转为数组并获取 GetCustomAttributes
public class SetArrtibute : Attribute { private string strCity = string.Empty;//城市 private string strTime = string.Empty;//时间 //public SetArrtibute(string city) //{ // this.strCity = city; //} public SetArrtibute(string city, string time) { this.strCity = city; this.strTime = time; } /// <summary> /// 城市 /// </summary> public string City { get { return strCity; } set { strCity = value; } } /// <summary> /// 时间 /// </summary> public string Time { get { return strTime; } set { strTime = value; } } /// <summary> /// 获取汉字备注属性 /// </summary> public static Object GetEnumArrtibute(Enum _enum, Type _type) { FieldInfo finfo = _enum.GetType().GetField(_enum.ToString()); Object[] ob = finfo.GetCustomAttributes(_type, false); if (ob == null || ob.Length == 0) { return null; } return ob[0]; } }
1.根据自定义枚举属性获取子项枚举特性、信息 typeof(DescriptionAttribute)
/// <summary> /// 获取枚举类子项描述信息 /// </summary> public static string GetEnumState(Enum enumState) { Object ob = SetArrtibute.GetEnumArrtibute(enumState, typeof(DescriptionAttribute)); if (ob == null) { return enumState.ToString(); } else { DescriptionAttribute da = (DescriptionAttribute)ob; return da.Description; } } public static void GetEnumState(Enum enumState, out string city, out string time) { Object ob = SetArrtibute.GetEnumArrtibute(enumState, typeof(SetArrtibute)); if (ob == null) { city = time = enumState.ToString(); } else { SetArrtibute sa = (SetArrtibute)ob; city = sa.City; time = sa.Time; } }
1.传入枚举子项 EnumState.beijing
2.位标志输出
EnumDescrption.GetEnumState(EnumState.beijing, out city, out time); num = (int)EnumState.beijing; strCity = EnumDescrption.GetEnumState(EnumState.dibai) + "=" + ((int)EnumState.dibai).ToString(); EnumState es = EnumState.bali | EnumState.shanghai | EnumState.dibai; //输出 shanghai, bali, dibai 【枚举类标记为 - [Flags]】 moreNuem = es.ToString();
PS: .第一次写博客笔记有点堆积代码,点滴聚集中 ~-~

浙公网安备 33010602011771号