自定义属性Attribute的运用
有时候需要一个枚举类,能够承载更多的信息,于是可以利用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的运用的更多相关文章
- Ahjesus获取自定义属性Attribute或属性的名称
1:设置自己的自定义属性 public class NameAttribute:Attribute { private string _description; public NameAttribut ...
- C# 自定义属性Attribute
自定义属性 /// <summary> /// 脱敏属性 /// </summary> public class SensitiveAttribute:Attribute { ...
- JS DOM属性,包括固有属性和自定义属性,以及属性获取、移除和设置
属性分为固有属性property和自定义属性attribute 固有属性查看 固有属性可以通过ele.property 来获取,自定义属性不行 <!DOCTYPE html> <ht ...
- C# VS JAVA 差异 (未完待续)
1. 静态构造函数 C#中有静态构造函数, Java中没有静态构造函数.其实Java中有一个类似静态构造函数的东东,称作静态初始化,或者静态代码块,可以通过这样的代码实现相同的功能: 但是Java中静 ...
- 【学】SoapExtension 学习
http://msdn.microsoft.com/zh-cn/library/System.Web.Services.Protocols.SoapExtension_methods(v=vs.80) ...
- 序列化和反序列化的几种方式(JavaScriptSerializer 、XmlSerializer、DataContractSerializer)(一)
JavaScriptSerializer 类 为启用 AJAX 的应用程序提供序列化和反序列化功能. 命名空间: System.Web.Script.Serialization 程序集: Sys ...
- Servlet概念框架
以 Servlet 3.0 源代码为基础.Servlet 是 Javaweb 应用的基础框架,犹如孙子兵法之于作战指挥官,不可不知. 概念框架 机制: 事件 Event, 监听器 Listener 数 ...
- jQuery从入门到忘记
jQuery 是一套Javascript脚本库,注意 jQuery 是脚本库,而不是脚本框架."库"不等于"框架".jQuery 并不能帮助我们解决脚本的引用管 ...
- jQuery 基础语法
jQuery介绍 1.jQuery是一个轻量级的.兼容多浏览器的JavaScript库. 2.jQuery使用户能够更方便地处理HTML Document.Events.实现动画效果.方便地进行Aja ...
随机推荐
- 关于clojurescript+phantomjs+react的一些探索
这两天需要使用phantomjs+react生成些图片 React->Clojurescript: 最开始发现clojurescript中包裹react的还挺多: https://github. ...
- SGU 145
节点不可重复经过的K短路问题. 思路:二分路径长度,深搜小于等于路径长度的路径数.可以利用可重复点K短路问题中的A*函数进行剪枝. 尝试另一种解法:把可重复点K短路A*直接搬过来,堆中的每个元素额外记 ...
- 洛谷 P2296 寻找道路 —— bfs
题目:https://www.luogu.org/problemnew/show/P2296 第一次用 Emacs 对拍,写了半天: 注意那个 is 赋值的地方很容易错,千万别反复赋值: 一道水题写了 ...
- bzoj1050
最小生成树 其实这道题是最小生成树的变种,我们发现答案不一定在最小/最大生成树上,最短路算法也不可行,因为我们我们并不是希望最小值尽量的大,最大值尽量的小,这样不一定是最优的,那么我们枚举最小的边,然 ...
- SpringBoot中使用spring-data-jpa 数据库操作(上)
Java客户端使用Spring-Data-Jpa这个组件. Spring-Data-Jpa就是Spring对Hibernate的一个整合. 选择create在运行的时候它会自动帮我们创建一个表. sp ...
- java笔记线程方式1获取对象名称
* 如何获取线程对象的名称呢? * public final String getName():获取线程的名称. * 如何设置线程对象的名称呢? * public final void setName ...
- 10.9NOIP模拟题
/* big模拟 细节不少 remove表示这个玩意儿在这一秒有没有移动 注意在一秒内所有小葱一起移动,所以如果一个一个处理 别忘了“错位”这种情况 */ #include<iostream&g ...
- Moco模拟服务器post&get请求 (二)
1.moco启动命令如下:java -jar moco-runner-0.12.0-standalone.jar 协议类型 -p 端口号 -c json配置文件 2.带参数的get请求 [ { &qu ...
- [C++ STL] deque使用详解
一.deque介绍: deque(双端队列)是一个动态数组,可以向两端发展,因此不论在尾部或头部安插元素都十分迅速. 在中间部分安插元素则比较费时,因为必须移动其它元素. 二.用法 1.头文件 #in ...
- Html 标签的事件绑定(转自 MSDN)
参考 MSDN 网页给 HTML 标签绑定 click 事件: function makeFoldersCollapsible(folderIcon, openFolderIcon, pathToIc ...