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;
            }
  • 相关阅读:
    调研《构建之法》指导下的历届作品
    需求分析与原型设计
    软件工程的实践项目课程的自我目标
    php 字符串的一些操作,以便记忆
    MOTT的学习(一)
    session,cookie
    php Curl_setop 的学习
    使用Git进行代码管理的心得
    搭建andiord sdk和安装eclipse adt插件的个人小体会
    这些天自身努力的体会,关于java方面的
  • 原文地址:https://www.cnblogs.com/berlin/p/6030068.html
Copyright © 2011-2022 走看看