zoukankan      html  css  js  c++  java
  • 懒人用枚举

    枚举定义如下:

    代码
        /// <summary>
        
    ///  用户身份
        
    /// </summary>
        public enum EnumMemberStata
        {
            
    /// <summary>
            
    ///  学生
            
    /// </summary>
            Student = 1,
            
    /// <summary>
            
    ///  家长
            
    /// </summary>
            Parents = 2,
            
    /// <summary>
            
    ///  教师
            
    /// </summary>
            Teacher = 3
        }

    前台使用还必须调用个方法,如下:

    代码
     public static string MemberStata(EnumMemberStata a)
            {
                
    switch (a)
                {
                    
    case  EnumMemberStata.Student:
                        
    return "学生";
                    
    case  EnumMemberStata.Parents:
                        
    return "家长";
                    
    case  EnumMemberStata.Teacher:
                        
    return "家长";
                    
    default:
                        
    return "学生";
                }
            }  

    我们可以通过为每个枚举值添加Description来简化。

    修改枚举定义如下:

     

    代码
      /// <summary>
        
    ///  用户身份
        
    /// </summary>
        public enum EnumMemberStata 
        {
            
    /// <summary>
            
    ///  学生
            
    /// </summary>
            [Description("学生")]
            Student
    =1,
             
    /// <summary>
            
    ///  家长
            
    /// </summary>
            [Description("家长")]
            Parents
    =2,
            
    /// <summary>
            
    ///  教师
            
    /// </summary>
            [Description("教师")]
            Teacher
    =3
        }

    再写个方法来获取Description值,如下:

    代码
    using System.Reflection;
    using System.ComponentModel;
    using System.Collections.Specialized;

           
    /// <summary>
           
    ///  获取enumdesc
           
    /// </summary>
           
    /// <param name="value"></param>
           
    /// <returns></returns>
           public static string GetDescription(Enum value)
           {

               FieldInfo field 
    = value.GetType().GetField(value.ToString());
               DescriptionAttribute[] attributes 
    = (DescriptionAttribute[])field.GetCustomAttributes(typeof(DescriptionAttribute), false);
               
    return (attributes.Length > 0? attributes[0].Description : value.ToString();
           }

     如果这个时候您觉得只有一个Description不够用,想再多添加自定义的属性.如:

    代码
       public class EnumDescriptionAttribute : Attribute

    {

        
    private string _text = "";

        
    /// <summary>

        
    /// Text describing the enum value

        
    /// </summary>

        
    public string Text

        {

            
    get { return this._text; }

        }

     

        
    /// <summary>

        
    /// Instantiates the EnumDescriptionAttribute object

        
    /// </summary>

        
    /// <param name=”text”>Description of the enum value</param>

        
    public EnumDescriptionAttribute(string text)

        {

            _text 
    = text;

        }
    }


        
    public enum MyEnum
          {
              [Description(
    "男孩")]
              [EnumDescriptionAttribute(
    "男孩备注")]
              Girl 
    = 0,
              [Description(
    "女孩")]
              [EnumDescriptionAttribute(
    "女孩备注")]
              Boy 
    = 1

          }

     获取其属性值的代码如下:

    代码
       public static String GetEnumDesc(Enum e)
        {

            FieldInfo EnumInfo 
    = e.GetType().GetField(e.ToString());

            EnumDescriptionAttribute[] EnumAttributes 
    = (EnumDescriptionAttribute[])EnumInfo.
                GetCustomAttributes(
    typeof(EnumDescriptionAttribute), false);
            
    if (EnumAttributes.Length > 0)
            {
                
    return EnumAttributes[0].Text;
            }
            
    return e.ToString();
        }

     调用方法为:

    EnumText.MyEnum aa = EnumText.MyEnum.Doctor;
    Response.Write(GetVal.GetEnumDesc(aa));

     当您做后台用户权限的时候如果用到枚举,这个时候您可能需要使用按位枚举:

    [Flags]

    public enum Permission

    {

          Select 
    = 1,

          Edit 
    = 2,

        Delete 
    = 4

        View 
    = 8,    

        All 
    = Select | Edit | Delete | View

       } 

    参考:1.给枚举添加描述信息

             2.用反射+特性列出所有的枚举变量及其描述信息,绑定到DropDownList上。

             3.DropDownList绑定枚举类型

             4.Text description for enum values     

             5. 关于枚举的种种 (Enumeration FAQ) [C#, IL, BCL]

     

  • 相关阅读:
    三大程序结构
    数组
    php多种排序
    购物车多选提交订单
    AJAX无刷新加购物车
    php常用
    通过判断加载遍历首页内容
    登陆权限验证
    PHP打印数据和mb_substr函数
    apollo3.5搭建教程(调试成功)
  • 原文地址:https://www.cnblogs.com/dooom/p/1684404.html
Copyright © 2011-2022 走看看