有时候需要一个枚举类,能够承载更多的信息,于是可以利用attribute这个特性。

首先编写自己业务需求类

[AttributeUsage(AttributeTargets.Field)]
public class IconAttribute : Attribute
{
public IconAttribute()
{
}
public string Name
{
get; set;
}
public string Icon
{
get; set;
}
public string Title
{
get; set;
}
public string Url
{
get;
set;
} public static IconAttribute Get(object enm,string pref="null")
{
string key = enm.ToString() + pref;
return CacheHelper.Get<IconAttribute>(key,//自定义扩展的缓存类
CacheTimeOption.OneMinute, () =>
{
var ret = new IconAttribute();
MemberInfo[] mis = enm.GetType().GetMember(enm.ToString());
if (mis.Length > )
{
foreach (MemberInfo mi in mis)
{
IconAttribute attr = Attribute.GetCustomAttribute(mi, typeof(IconAttribute)) as IconAttribute;
if (attr != null)
{
ret.Icon = attr.Icon ?? "";
ret.Title = attr.Title ?? "";
ret.Name = attr.Name ?? "";
ret.Url = attr.Url ?? "";
}
}
}
return ret;
});
}
}

枚举定义

 public enum ProductOption
{
[IconAttribute(Name = "qq1",
Url = "/home.ashx/index/1",
Icon = "../../images/pic/1.png")]
QQ1= , [IconAttribute(Name = "qq2",
Url = "/home.ashx/index/2",
Icon = "../../images/pic/2.png")]
QQ2 =
}

调用

//遍历项目的枚举
foreach (ProductOption item in Enum.GetValues(typeof(ProductOption)))
{
var link = IconAttribute.Get(item, "ProductOption");
ret.Add(link);
}

自定义属性Attribute的运用的更多相关文章

  1. Ahjesus获取自定义属性Attribute或属性的名称

    1:设置自己的自定义属性 public class NameAttribute:Attribute { private string _description; public NameAttribut ...

  2. C# 自定义属性Attribute

    自定义属性 /// <summary> /// 脱敏属性 /// </summary> public class SensitiveAttribute:Attribute { ...

  3. JS DOM属性,包括固有属性和自定义属性,以及属性获取、移除和设置

    属性分为固有属性property和自定义属性attribute 固有属性查看 固有属性可以通过ele.property 来获取,自定义属性不行 <!DOCTYPE html> <ht ...

  4. C# VS JAVA 差异 (未完待续)

    1. 静态构造函数 C#中有静态构造函数, Java中没有静态构造函数.其实Java中有一个类似静态构造函数的东东,称作静态初始化,或者静态代码块,可以通过这样的代码实现相同的功能: 但是Java中静 ...

  5. 【学】SoapExtension 学习

    http://msdn.microsoft.com/zh-cn/library/System.Web.Services.Protocols.SoapExtension_methods(v=vs.80) ...

  6. 序列化和反序列化的几种方式(JavaScriptSerializer 、XmlSerializer、DataContractSerializer)(一)

    JavaScriptSerializer 类 为启用 AJAX 的应用程序提供序列化和反序列化功能. 命名空间:   System.Web.Script.Serialization 程序集:  Sys ...

  7. Servlet概念框架

    以 Servlet 3.0 源代码为基础.Servlet 是 Javaweb 应用的基础框架,犹如孙子兵法之于作战指挥官,不可不知. 概念框架 机制: 事件 Event, 监听器 Listener 数 ...

  8. jQuery从入门到忘记

    jQuery 是一套Javascript脚本库,注意 jQuery 是脚本库,而不是脚本框架."库"不等于"框架".jQuery 并不能帮助我们解决脚本的引用管 ...

  9. jQuery 基础语法

    jQuery介绍 1.jQuery是一个轻量级的.兼容多浏览器的JavaScript库. 2.jQuery使用户能够更方便地处理HTML Document.Events.实现动画效果.方便地进行Aja ...

随机推荐

  1. DEDE织梦 后台特别卡,有时响应超时的解决办法

    跟大家一样,大致情况是: 1.打开后台首页第一次没问题,但是刷新或者点其他菜单就一直卡着了. 2.关掉浏览器重新进首页没问题,但是一旦进了首页再打开php页面就卡死了. 3.服务器返回Maximum ...

  2. dpdpdpdp~~~!!!

    dpdpdpdpdpdp D你妹个P!  妈的劳资就不信征服不了你!!哼!!

  3. android 反编译 for mac

    android反编译现在来说的话很方便. windows上有不好好用的工具,当然我比较喜欢dex2jar 这个是比较好用的,打开他的文件目录会发现,里面有很多.sh .bat文件 那也就是说在wind ...

  4. 杂项-Java:JSP

    ylbtech-杂项-Java:JSP 1.返回顶部 1. JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,它是由Sun Micros ...

  5. spring-boot-configuration-processor的作用

    spring默认使用yml中的配置,但有时候要用传统的xml或properties配置,就需要使用spring-boot-configuration-processor了 先引入pom依赖 <d ...

  6. E20170606-hm

    pipeline   n. 管道; 输油管道; 渠道,传递途径; dump   vt. 倾倒; 倾销; 丢下,卸下; 摆脱,扔弃;   n. 垃圾场; 仓库; 无秩序地累积;

  7. sublime text2 配置php本地环境时遇到的错误。

    首先,将PHP加到电脑的环境变量中如图(D:\PHPEnv\PHP5是我PHP的安装目录): 第二步:添加编译系统配置 第三步:配置详情: { "cmd": ["php. ...

  8. AutoCAD2013 以上利用AccoreConsole+ c# NetApi 批量处理图纸

    AccoreConsole听起来有点拗口,其中文名可以叫做AutoCAD控制台或者无头AutoCAD.一句话概括,它是快速启动AutoCAD运行微环境,高效的处理图纸.你可以如同DOS命令行一样操作命 ...

  9. Visual Studio Code 扩展工具集,记录

    编码 提高效率及校验 Auto Close Tag 自动闭合标签 Auto Rename Tag 自动更改HTML/XML标签,不需要再进行二次修改,减少50%的工作量! Path Intellise ...

  10. Java编程思想读书笔记_第7章

    final关键字类似const: import java.util.*; public class FinalData { static Random rand = new Random(47); f ...