• 如何获取枚举的描述及其枚举值


    最近在做一个学校的系统,其中用到一些枚举,可是在显示下拉列表时要绑定枚举的描述及其枚举值时就只一个一个的默认设死,这样不灵活。有没有其快捷方法?搜了下百度很多相关资料有了些许眉目,代码如下

    1.首先定义枚举,这里要做显示学生状态的列表,如下所示

     1 /// <summary>
     2     /// 学生状态
     3     /// </summary>
     4     public enum StudentStatusEnum
     5     {
     6         /// <summary>
     7         /// 在读
     8         /// </summary>
     9         [Description("在读")]
    10         Study = 0,
    11 
    12         /// <summary>
    13         /// 毕业
    14         /// </summary>
    15         [Description("毕业")]
    16         Graduate = 1,
    17 
    18         /// <summary>
    19         /// 退学
    20         /// </summary>
    21         [Description("退学")]
    22         Leave = 2,
    23 
    24         /// <summary>
    25         /// 休学
    26         /// </summary>
    27         [Description("休学")]
    28         Suspend = 3
    29     }

    2.循环取枚举属性,Enum.GetNames这个方法是获取枚举定义的属性(如Study),Enum.GetValues这个方法是获取枚举定义的属性值(如0)

    1  foreach (var em in Enum.GetNames(typeof(StudentStatusEnum)))
    2  {
    3      var value = (int)Enum.Parse(typeof(StudentStatusEnum), em);
    4      var name = ((StudentStatusEnum)Enum.Parse(typeof(StudentStatusEnum), em)).GetDescription();
    5      lst.Add(new BusinessObject { Name=name,Code=value.ToString()});
    6  }

    3.GetDescription方法如下

     1 public static string GetDescription(this object o)
     2 {
     3             return GetEnumAtribute(o);
     4 }
     5 
     6 public static string GetEnumAtribute(object obj)
     7 {
     8             if (obj == null)
     9                 return string.Empty;
    10             var o = GetCustomAttribute<DescriptionAttribute>(obj);
    11             if (o != null)
    12                 return o.Description;
    13             return obj.ToString();
    14 }
    15 
    16 public static ATT GetCustomAttribute<ATT>(object o) where ATT : Attribute
    17         {
    18             if (o == null)
    19                 return default(ATT);
    20             System.Reflection.FieldInfo f = o.GetType().GetField(o.ToString());
    21             if (f == null)
    22                 return default(ATT);
    23             var a = f.GetCustomAttributes(typeof(ATT), true).FirstOrDefault();
    24             if (a == null)
    25                 return default(ATT);
    26             else
    27                 return (ATT)a;
    28         }

    完毕!!!

  • 相关阅读:
    tableau用户留存分析
    tableau用户分类
    业务
    数据分析的思维技巧-二
    数据分析的思维技巧
    业务化思维
    公式化思维
    结构化思维
    Shortest Unsorted Continuous Subarray
    Longest Harmonious Subsequence
  • 原文地址:https://www.cnblogs.com/scong/p/5259522.html
Copyright © 2020-2023  润新知