zoukankan      html  css  js  c++  java
  • .NET--------枚举扩展方法(枚举转list,获取枚举描述)

     1         /// <summary>
     2         /// get enum description by name
     3         /// </summary>
     4         /// <typeparam name="T">enum type</typeparam>
     5         /// <param name="enumItemName">the enum name</param>
     6         /// <returns></returns>
     7         public static string GetDescriptionByName<T>(T enumItemName)
     8         {
     9             FieldInfo fi = enumItemName.GetType().GetField(enumItemName.ToString());
    10 
    11             DescriptionAttribute[] attributes = (DescriptionAttribute[])fi.GetCustomAttributes(
    12                 typeof(DescriptionAttribute), false);
    13 
    14             if (attributes != null && attributes.Length > 0)
    15             {
    16                 return attributes[0].Description;
    17             }
    18             else
    19             {
    20                 return enumItemName.ToString();
    21             }
    22         }  
     1         /// <summary>
     2         /// 获取描述
     3         /// </summary>
     4         /// <param name="en"></param>
     5         /// <returns></returns>
     6         public static string GetEnumText(this Enum en)
     7         {
     8             FieldInfo fi = en.GetType().GetField(en.ToString());
     9 
    10             DescriptionAttribute[] attributes = (DescriptionAttribute[])fi.GetCustomAttributes(
    11                 typeof(DescriptionAttribute), false);
    12 
    13             if (attributes != null && attributes.Length > 0)
    14             {
    15                 return attributes[0].Description;
    16             }
    17             else
    18             {
    19                 return en.ToString();
    20             }
    21         }
     1         /// <summary>
     2         /// 枚举转list
     3         /// </summary>
     4         /// <typeparam name="T"></typeparam>
     5         /// <returns></returns>
     6         public static List<EnumModel> ConvertEnumToList<T>()
     7         {
     8             List<EnumModel> list = new List<EnumModel>();
     9 
    10             foreach (var e in Enum.GetValues(typeof(T)))
    11             {
    12                 EnumModel m = new EnumModel();
    13                 m.Value = Convert.ToInt32(e);
    14                 m.Description = EnumHelper.GetDescriptionByName((T)e);
    15                 list.Add(m);
    16             }
    17             return list;
    18         }
    19 
    20         public class EnumModel
    21         {
    22             public int Value { get; set; }
    23             public string Description { get; set; }
    24         }
     1         /// <summary>
     2         /// 根据枚举值获得枚举描述
     3         /// </summary>
     4         /// <param name="e"></param>
     5         /// <param name="value"></param>
     6         /// <returns></returns>
     7         public static String GetEnumDesc(this Type e, int? value)
     8         {
     9             FieldInfo[] fields = e.GetFields();
    10             for (int i = 1, count = fields.Length; i < count; i++)
    11             {
    12                 if ((int)System.Enum.Parse(e, fields[i].Name) == value)
    13                 {
    14                     DescriptionAttribute[] EnumAttributes = (DescriptionAttribute[])fields[i].
    15                 GetCustomAttributes(typeof(DescriptionAttribute), false);
    16                     if (EnumAttributes.Length > 0)
    17                     {
    18                         return EnumAttributes[0].Description;
    19                     }
    20                 }
    21             }
    22             return "";
    23         }
  • 相关阅读:
    【linux】在命令行里进行数学计算
    vi编辑器的分割窗口
    Linux 磁盘管理命令
    【Matlab】sparse函数和full函数(稀疏矩阵和非稀疏矩阵转换)
    【R】 绘制 热图 heatmap
    Intent用法实例
    Android调用天气预报的WebService简单例子
    Broadcast广播消息
    Android与服务器端数据交互(基于SOAP协议整合android+webservice)
    Java中String类的方法及说明
  • 原文地址:https://www.cnblogs.com/chocolatexll/p/10593920.html
Copyright © 2011-2022 走看看