【 学习日记__枚举 】

 

知识点: 枚举、枚举自定义属性、位标志

 

     效果图

提要: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: .第一次写博客笔记有点堆积代码,点滴聚集中 ~-~

                                                                      

 

 

posted @ 2013-10-01 14:40  LG3724  阅读(176)  评论(0)    收藏  举报