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;
            }
  • 相关阅读:
    python数据结构之图的实现方法
    大数据将如何颠覆信任危机
    大数据将如何颠覆信任危机
    JQuery的入门(二)
    递归思想
    Jquery的入门(一)
    如果让你写一个消息队列,该如何进行架构设计啊?
    如何解决消息队列的延时以及过期失效问题?消息队列满了以后怎么处理?有几百万消息持续积压 几小时.怎么解决?
    如何保证消息的顺序性?
    如何保证消息在传送的过程中不会丢失?(如何保证消息的可靠性传输?)
  • 原文地址:https://www.cnblogs.com/berlin/p/6030068.html
Copyright © 2011-2022 走看看