• 枚举帮助类


    一、引用

    1 using System.Collections.Generic;//键值对
    2 using System.Reflection;//反射
    3 System.ComponentModel;//指定属性

    二、使用

          1、返回枚举值的描述信息

     1 /// <summary>
     2         /// 返回枚举值的描述信息。
     3         /// </summary>
     4         /// <param name="value">要获取描述信息的枚举值。</param>
     5         /// <returns>枚举值的描述信息。</returns>
     6         public static string GetEnumDesc<T>(int value)
     7         {
     8             Type enumType = typeof(T);
     9             DescriptionAttribute attr = null;
    10 
    11             // 获取枚举常数名称。
    12             string name = System.Enum.GetName(enumType, value);
    13             if (name != null)
    14             {
    15                 // 获取枚举字段。
    16                 FieldInfo fieldInfo = enumType.GetField(name);
    17                 if (fieldInfo != null)
    18                 {
    19                     // 获取描述的属性。
    20                     attr = Attribute.GetCustomAttribute(fieldInfo, typeof(DescriptionAttribute), false) as DescriptionAttribute;
    21 
    22                 }
    23             }
    24 
    25             // 返回结果
    26             if (attr != null && !string.IsNullOrEmpty(attr.Description))
    27                 return attr.Description;
    28             else
    29                 return string.Empty;
    30         }
    返回枚举值的描述信息。

          2、返回枚举项的描述信息

     1  /// <summary>
     2         /// 返回枚举项的描述信息。
     3         /// </summary>
     4         /// <param name="e">要获取描述信息的枚举项。</param>
     5         /// <returns>枚举项的描述信息。</returns>
     6         public static string GetEnumDesc(System.Enum e)
     7         {
     8             if (e == null)
     9             {
    10                 return string.Empty;
    11             }
    12             Type enumType = e.GetType();
    13             DescriptionAttribute attr = null;
    14 
    15             // 获取枚举字段。
    16             FieldInfo fieldInfo = enumType.GetField(e.ToString());
    17             if (fieldInfo != null)
    18             {
    19                 // 获取描述的属性。
    20                 attr = Attribute.GetCustomAttribute(fieldInfo, typeof(DescriptionAttribute), false) as DescriptionAttribute;
    21             }
    22 
    23             // 返回结果
    24             if (attr != null && !string.IsNullOrEmpty(attr.Description))
    25                 return attr.Description;
    26             else
    27                 return string.Empty;
    28         }
    返回枚举项的描述信息

          3、获取枚举值列表,并转化为键值对

     1 /// <summary>
     2         /// 获取枚举值列表,并转化为键值对
     3         /// </summary>
     4         /// <typeparam name="T"></typeparam>
     5         /// <param name="isHasAll">是否包含“全部”</param>
     6         /// <param name="filterItem">过滤项</param>
     7         /// <returns></returns>
     8         public static List<EnumKeyValue> EnumToList<T>(bool isHasAll, params string[] filterItem)
     9         {
    10             List<EnumKeyValue> list = new List<EnumKeyValue>();
    11             // 如果包含全部则添加
    12             if (isHasAll)
    13             {
    14                 list.Add(new EnumKeyValue() { Key = 0, Name = "全部" });
    15             } 
    16             foreach (int item in System.Enum.GetValues(typeof(T)))
    17             {
    18                 string name = System.Enum.GetName(typeof(T), item);
    19                 // 跳过过滤项
    20                 if (filterItem != null)
    21                 {
    22                     if (Array.IndexOf<string>(filterItem, name) != -1)
    23                     {
    24                         continue;
    25                     }
    26                 }
    27                 // 添加
    28                 EnumKeyValue model = new EnumKeyValue();
    29                 model.Key = item;
    30                 model.Name = name;
    31                 list.Add(model);
    32             } 
    33             return list;
    34         }
    获取枚举值列表,并转化为键值对

          4、获取枚举的描述

    /// <summary>
            /// 获取枚举的描述
            /// </summary>
            /// <param name="value"></param>
            /// <returns></returns>
            public static string GetEnumDescription(this Enum value)
            {
                Type type = value.GetType();
                string name = Enum.GetName(type, value);
                if (name != null)
                {
                    // 获取枚举字段。
                    FieldInfo fieldInfo = type.GetField(name);
                    if (fieldInfo != null)
                    {
                        // 获取描述的属性。
                        DescriptionAttribute attr = Attribute.GetCustomAttribute(fieldInfo,
                            typeof(DescriptionAttribute), false) as DescriptionAttribute;
                        if (attr != null)
                        {
                            return attr.Description;
                        }
                    }
                }
                return null;
            }
    获取枚举的描述
  • 相关阅读:
    ABP 源码分析目录
    vika维格表模板大赛落幕:3888元大礼包花落谁家?
    OKR太难定?模板大全:产品/研发/运营/销售/行政全都有
    菜鸟成长记(四)----- 实习总结与反思
    菜鸟成长记(三)----- 年终总结与感悟
    菜鸟成长记(二)
    自我激励
    承认
    书评-《当下的力量(珍藏版)》-埃克哈特&#183;托利
    关于吃苦
  • 原文地址:https://www.cnblogs.com/raniynight/p/9282449.html
Copyright © 2020-2023  润新知