惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Vercel News
Vercel News
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
S
SegmentFault 最新的问题
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园 - Franky
有赞技术团队
有赞技术团队
Last Week in AI
Last Week in AI
Martin Fowler
Martin Fowler
MyScale Blog
MyScale Blog
aimingoo的专栏
aimingoo的专栏
Recent Announcements
Recent Announcements
雷峰网
雷峰网
T
Tor Project blog
博客园_首页
D
Darknet – Hacking Tools, Hacker News & Cyber Security
The Register - Security
The Register - Security
T
The Blog of Author Tim Ferriss
Recorded Future
Recorded Future
V
Vulnerabilities – Threatpost
Project Zero
Project Zero
J
Java Code Geeks
AWS News Blog
AWS News Blog
Security Latest
Security Latest
Spread Privacy
Spread Privacy
T
Threatpost
博客园 - 三生石上(FineUI控件)
I
Intezer
G
Google Developers Blog
Scott Helme
Scott Helme
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
The Hacker News
The Hacker News
博客园 - 【当耐特】
Apple Machine Learning Research
Apple Machine Learning Research
NISL@THU
NISL@THU
A
Arctic Wolf
F
Full Disclosure
P
Proofpoint News Feed
G
GRAHAM CLULEY
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Microsoft Azure Blog
Microsoft Azure Blog
P
Proofpoint News Feed
N
Netflix TechBlog - Medium
C
Cybersecurity and Infrastructure Security Agency CISA
T
Threat Research - Cisco Blogs
B
Blog
IT之家
IT之家
MongoDB | Blog
MongoDB | Blog
L
LangChain Blog
Know Your Adversary
Know Your Adversary

博客园 - 深蓝--广州

AngularJs angular.identity和angular.noop详解 css中clearfix清除浮动的用法及其原理示例介绍 opacity与RGBA透明的区别 CSS3 Gradient javascript语言精粹 严格模式认识 Promise与Defer认识 使用javascript打开一个新页而不被浏览器屏蔽 关于浏览器缓存 ie6下js更新元素display:block后,仍然不显示的hack办法 jQuery jsonp无法捕获404、500状态错误 移动端开发问题整理 修改input的type属性 transform:rotate在手机上显示有锯齿的解决方案 javascript钩子机制 jQuery.validate 常用方法及注意问题 SWFObject推出2使用示例 .NET种Json时对单引号和特殊字符串的处理 Python Win32 Extensions
自定义枚举类型注释属性,并在程序中获取
深蓝--广州 · 2010-12-14 · via 博客园 - 深蓝--广州

//方法:  
 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;
            }
        }
    }