zoukankan      html  css  js  c++  java
  • 自定义枚举类型注释属性,并在程序中获取 深蓝

    //方法:  
     public static string GetEnumDescription<TEnum>(object value)
            {
                Type enumType 
    = typeof(TEnum);
                
    if (!enumType.IsEnum)
                {
                    
    throw new ArgumentException("enumItem requires a Enum ");
                }
                var name 
    = Enum.GetName(enumType, Convert.ToInt32(value));
                
    if (name == null)
                    
    return string.Empty;
                
    object[] objs = enumType.GetField(name).GetCustomAttributes(typeof(DescriptionAttribute), false);
                
    if (objs == null || objs.Length == 0)
                {
                    
    return string.Empty;
                }
                
    else
                {
                    DescriptionAttribute attr 
    = objs[0as DescriptionAttribute;
                    
    return attr.Description;
                }
            }
     
    // 调用:
    string desc=GetEnumDescription<Filter>(Filter.Public); //得到Filter(enum)中,为Public 所定义的描述信息.
     
    // Filter枚举的描述:
     
     
    public enum Filter
        {
            
    /// <summary>
            
    /// 全部
            
    /// </summary>
            [Description("全部")]
            All 
    = 1,
            
    /// <summary>
            
    /// 已分配
            
    /// </summary>
            [Description("已分配")]
            Assigned 
    = 2,
            
    /// <summary>
            
    /// 待分配
            
    /// </summary>
            [Description("待分配")]
            Assigning 
    = 3,
            
    /// <summary>
            
    /// 返回调整
            
    /// </summary>
            [Description("返回调整")]
            Adjusting 
    = 4,
            
    /// <summary>
            
    /// 已拒绝
            
    /// </summary>
            [Description("已拒绝")]
            Reject 
    = 5,
            
    /// <summary>
            
    /// 公共
            
    /// </summary>
            [Description("公共")]
            Public 
    = 6,
            
    /// <summary>
            
    /// Sales把发回调整的客户编辑后不先提交只保存信息
            
    /// </summary>
            [Description("草稿")]
            Draft 
    = 7,
            
    /// <summary>
            
    /// 排队
            
    /// </summary>
            [Description("排队")]
            InQueue 
    = 8,
            
    /// <summary>
            
    /// 发放给大区经理审批
            
    /// </summary>
            [Description("审批转移")]
            ToManagerCheck 
    = 9,
            
    /// <summary>
            
    /// 不返回任何值的条件
            
    /// </summary>
            None = -1,
        }
     
    //4, DescriptionAttribute 的定义:
     
    public class DescriptionAttribute : Attribute
        {
            
    public DescriptionAttribute(string desc);
            
    public string Description { getset; }
        }
     
    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     
     
    public partial class 枚举_Enum_自定义属性 : System.Web.UI.Page
        {
            
    protected void Page_Load(object sender , EventArgs e)
            {
                
    string desc = GetEnumDescription<MyColorEnum>(MyColorEnum.red);
                
    //desc = GetEnumDescription<MyColorEnum>(1);
                Response.Write(desc);
            }
            
    public enum MyColorEnum
            {
                [DescriptionAttribute(
    "红色")]
                red ,
                [DescriptionAttribute(
    "蓝色")]
                blue ,
                [DescriptionAttribute(
    "绿色")]
                green ,
                [DescriptionAttribute(
    "白色")]
                white
            }
            
    //其实这个属性已经有了:
            
    //public class DescripteAttribute : Attribute
            
    //{
            
    //    public DescripteAttribute(string desc)
            
    //    {
            
    //        this._description = desc;
            
    //    }
            
    //    private string _description;
            
    //    public string Description
            
    //    {
            
    //        get
            
    //        {
            
    //            return this._description;
            
    //        }
            
    //        set
            
    //        {
            
    //            this._description = value;
            
    //        }
            
    //    }
            
    //}
            /// <summary>
            
    /// 获取枚举项的描述
            
    /// </summary>
            
    /// <param name="enumItem">具体枚举类型</param>
            
    /// <returns></returns>
            public static string GetEnumDescription<TEnum>(object value)
            {
                Type enumType 
    = typeof(TEnum);
                
    if(!enumType.IsEnum)
                {
                    
    throw new ArgumentException("不是枚举类型");
                }
                
    string enumItem = Enum.GetName(enumType , Convert.ToInt32(value));
                
    if(enumItem == null)
                {
                    
    return string.Empty;
                }
                
    object[] objs = enumType.GetField(enumItem).GetCustomAttributes(typeof(DescriptionAttribute) , false);
                
    if(objs == null || objs.Length == 0)
                {
                    
    return string.Empty;
                }
                
    else
                {
                    DescriptionAttribute attr 
    = objs[0as DescriptionAttribute;
                    
    return attr.Description;
                }
            }
        }
  • 相关阅读:
    HDFS 2.X新特性
    kettle的系列教程
    Kettle基本使用
    MySQL流程控制结构
    MySQL函数
    MySQL存储过程和函数
    MySQL变量
    MySQL视图
    TCL(事务控制语言)
    MySQL标识列(自增长列)
  • 原文地址:https://www.cnblogs.com/pao8041/p/1905888.html
Copyright © 2011-2022 走看看