zoukankan      html  css  js  c++  java
  • 枚举的使用总结

    C#中枚举的使用

    1.原则上全部使用枚举,不使用常量,除非常量是一个,不是一组

    2.如果一组常量中增减常量后要对代码修改,则要将这组常量定义为枚举

    3.如果一组常量中增减常量后代码不需要修改,则要将这组常量存储到字码主档中,由数据库进行维护

    枚举扩展方法

    1.将字符串转为枚举

            /// <summary>
            /// 通枚举项的名字转换为枚举
            /// </summary>
            /// <typeparam name="TEnum">要转换的枚举类型</typeparam>
            /// <param name="enumName">枚举项的名字</param>
            /// <returns></returns>
            public static TEnum ToEnum<TEnum>(this string enumName) where TEnum : struct, IComparable, IFormattable, IConvertible
            {
               return (TEnum)Enum.Parse(typeof(TEnum), enumName);
            }

    2.获取枚举的描述,在枚举项定义时加上Description 特性

            /// <summary>
            /// 获取一个枚举值的描述
            /// </summary>
            /// <param name="obj">枚举值</param>
            /// <returns></returns>
            public static string GetDescription(this Enum obj)
            {
                FieldInfo fi = obj.GetType().GetField(obj.ToString());
                DescriptionAttribute[] arrDesc = (DescriptionAttribute[])fi.GetCustomAttributes(typeof(DescriptionAttribute), false);
                return arrDesc[0].Description;
            }

    3.获取枚举的数据清单,方便绑定到下拉列表等控件

            /// <summary>
            /// 获取枚举的(描述,名称,值)数据列表,通常用于绑定到控件
            /// </summary>
            /// <typeparam name="TEnum">枚举类型</typeparam>
            /// <returns></returns>
            public static List<Tuple<string, string, int>> GetEnumDataList<TEnum>() where TEnum : struct  , IComparable, IFormattable, IConvertible
            {
                List<Tuple<string, string, int>> dataList = new List<Tuple<string, string, int>>();
                Type t = typeof(TEnum);
                if (!t.IsEnum)
                {
                    return null;
                }
                Array arrays = Enum.GetValues(t);
                for (int i = 0; i < arrays.LongLength; i++)
                {
                    Enum tmp = (Enum)arrays.GetValue(i);
                    string description = GetDescription(tmp);
                    string name = tmp.ToString();
                    int value = Convert.ToInt32( tmp);
                    dataList.Add(new Tuple<string, string, int>(description, name, value));
                }
                return dataList;
            }
  • 相关阅读:
    Notification(一)系统通知的监听移除
    控制器的生命周期
    Foundation Framework
    View的生命周期方法:loadView、viewDidLoad、viewDidUnload的关系
    第一篇markdown博文
    0622.获取json文件的数据
    0622.发送邮件基本操作
    0622.设置tableView的背景图片(平铺的方式)
    0621.用WebView展示html数据
    iOS的Quartz2D篇——基本图形的绘制
  • 原文地址:https://www.cnblogs.com/berlin/p/6030068.html
Copyright © 2011-2022 走看看