获取指定类型如枚举/属性上自定义attribue值
有时候我们用数字来区分一些类型,如1:中国银行,2:建设银行,3:工商银行,……。
这时候我在代码中通常会定义枚举来与定义的一一对应,并在该枚举值上设置特性来表示所代表的含义,这样避免多处写一些数字来标识所代表的类型。而且后续添加修改也很方便。 首先,自定义一个特性描述类:
public class DescriptionAttribute : Attribute
{
public static readonly DescriptionAttribute Default; public DescriptionAttribute();
public DescriptionAttribute(string description); public virtual string Description { get; }
protected string DescriptionValue { get; set; } public override bool Equals(object obj);
public override int GetHashCode();
}
定义枚举:
public enum EnumType
{
[Description("第一")]
FIRST,
[Description("第二")]
SECOND,
[Description("第三")]
THIRD,
}
将枚举特性值转为注释信息:
/// <summary>
/// 将枚举特性值转为注释信息
/// </summary>
/// <param name="enumType"></param>
/// <returns></returns>
public static string ToString<T>(this T enumType)
{
Type type = enumType.GetType();
FieldInfo fd = type.GetField(enumType.ToString());
if (fd == null)
return string.Empty;
var attributes = fd.GetCustomAttributes(typeof(DescriptionAttribute), false); var txt = string.Empty;
foreach (DescriptionAttribute attr in attributes)
{
txt = attr.Description;
break;
}
return txt;
}
调用:
var name = EnumType.FIRST.ToString<EnumType>();
2 //第一
获取指定类型如枚举/属性上自定义attribue值的更多相关文章
- Java获取未知类型对象的属性
获取未知类型对象的属性通常有两种方式: 一是通过自定义注解的方式,通过获取被注解的属性从而获取属性的值,这种方式也是Spring参数注入的重要实现手段 二是通过反射获取属性的名称,通过属性名从而获取属 ...
- Asp.Net 如何获取所有控件&如何获取指定类型的所有控件
一. Asp.Net Page页面中访问所有控件的属性为: Page.Controls 控件的结构是树结构. 二.获取指定类型所有控件实例: 1.递归方法定义: private void GetCon ...
- servlet操作本地文件汇总: 判断文件是否存在;文件重命名;文件复制; 获取文件属性信息,转成Json对象; 获取指定类型的文件; 查找替换.txt中的文本
package servlet; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; ...
- C# 获取指定类型的文件
C# 获取指定类型的文件 public static List<FileInfo> getFile(string path, string extName) { List<FileI ...
- 【Javascript-基础-getOwnPropertyNames】Object.getOwnPropertyNames() 获取对象自身可枚举属性
可枚举属性和不可枚举属性 在JavaScript中,对象的属性分为可枚举和不可枚举之分,它们是由属性的enumerable值决定的.可枚举性决定了这个属性能否被for-in查找遍历到. 可枚举属性 e ...
- selenium,统计某分支下有多少个同类子分支的方法(用于循环获取同类型子分支属性值)
利用selenium自动化统计微博阅读数 查看微博阅读数的元素路径 微博列表中第一条微博的元素路径“//*[@id="Pl_Official_MyProfileFeed__20"] ...
- SpringBoot27 JDK动态代理详解、获取指定的类类型、动态注册Bean、接口调用框架
1 JDK动态代理详解 静态代理.JDK动态代理.Cglib动态代理的简单实现方式和区别请参见我的另外一篇博文. 1.1 JDK代理的基本步骤 >通过实现InvocationHandler接口来 ...
- WPF中获取指定坐标依赖对象数据项
上图中红色框区域是一个自定义的ListBox控件,需要实现的功能是,点击红框区域中某项时,获取当前选中项的数据项 控件的MouseDown事件部分代码为: var x = TreeHelper.Fin ...
- win10 uwp 获取指定的文件 AQS
很多时候不需要获取整个文件夹的文件,是需要获取文件夹里指定的文件. 那么 UWP 如何对文件夹里的文件进行过滤,只拿出自己需要的文件? 本文:如何使用通配符或文件匹配方式在uwp获取文件夹中指定的文件 ...
随机推荐
- 531. Lonely Pixel I
Given a picture consisting of black and white pixels, find the number of black lonely pixels. The pi ...
- MySQL什么时候会使用内部临时表?
1.union执行过程 首先我们创建一个表t1 create table t1(id int primary key, a int, b int, index(a)); delimiter ;; cr ...
- BZOJ——1611: [Usaco2008 Feb]Meteor Shower流星雨
http://www.lydsy.com/JudgeOnline/problem.php?id=1611 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 1 ...
- [Bzoj5254][Fjwc2018]红绿灯(线段树)
5254: [Fjwc2018]红绿灯 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 31 Solved: 24[Submit][Status][D ...
- ExtNet配置webconfig
<?xml version="1.0" encoding="utf-8"?> <!-- 有关如何配置 ASP.NET 应用程序的详细信息,请访 ...
- docker日志输出文件大小设置以及文件个数限制
问题描述: 今天有同事运行了一个docker容器,不多时就导致宿主机硬盘直接撑爆,消耗了120G,发生的很是突然. 问题排查: 后续查阅资料,发现是因为docker中的某个进程一直在持续输出,而这些输 ...
- 391. Perfect Rectangle
最后更新 一刷 16-Jan-2017 这个题我甚至不知道该怎么总结. 难就难在从这个题抽象出一种解法,看了别人的答案和思路= =然而没有归类总结到某种类型,这题相当于背了个题... 简单的说,除了最 ...
- C语言使用以及其它语言经常出的错误
1. 计算优先级 i/*pi/(*p) //默认即用“()”花括号分隔即可 2.分号结束 ; ; if(i<j);{ //code } //分号结束必须看清楚 3.声明变量 ; ; //声明变量 ...
- 嵌入式程序员应知道的0x10个C语言Tips
[1].[代码] [C/C++]代码 跳至 [1] ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 ...
- 【转载】TCP粘包问题分析和解决(全)
TCP通信粘包问题分析和解决(全) 在socket网络程序中,TCP和UDP分别是面向连接和非面向连接的.因此TCP的socket编程,收发两端(客户端和服务器端)都要有成对的socket,因此,发送 ...