C#给枚举增加一个Attribute,并通过反射获取Attribute的值。(借鉴)
2013-09-30 13:54
393 查看
[AttributeUsage(AttributeTargets.Field)] public class EnumExtension : Attribute { private string title; public EnumExtension(string title) { this.title = title; } public static string Get(Type tp, string name) { MemberInfo[] mi = tp.GetMember(name); if (mi != null && mi.Length > 0) { EnumExtension attr = Attribute.GetCustomAttribute(mi[0], typeof(EnumExtension)) as EnumExtension; if (attr != null) { return attr.title; } } return null; } public static string Get(object enm) { if (enm != null) { MemberInfo[] mi = enm.GetType().GetMember(enm.ToString()); if (mi != null && mi.Length > 0) { EnumExtension attr = Attribute.GetCustomAttribute(mi[0], typeof(EnumExtension)) as EnumExtension; if (attr != null) { return attr.title; } } } return null; } } public enum BorderStyle { [EnumExtension("正常")] None, [EnumExtension("圆角")] Rounded }
使用以下的方法就能取得枚举的Attribute值:
string name = EnumExtension.Get(BorderStyle.Rounded);
相关文章推荐
- C# 通过反射获取MVC Controller里的类名,方法名,参数列表,返回值类型,Description描述,自定义Attribute
- C#反射通过类名的字符串获取生成对应的实例
- c# 如何通过反射 获取属性值
- 怎么通过反射的方式获取指定变量名称的值呢?比如说一个const类型的常量:const string aa=123
- C# 给枚举类型增加一个备注特性
- C#用反射判断一个类型是否是Nullable同时获取它的根类型
- 使用反射获取枚举的自定义属性Attribute及其他使用方式
- C#中的特性 和 通过反射获取属性上的特性
- c# 如何通过反射 获取\设置属性值
- 枚举转中文,通过反射方法与描述的方式获取
- 3.C#中通过反射来获取Attribute中的信息
- Java 编程下通过反射获取一个类中的方法名和对应参数名
- C#通过反射获取上层调用方法信息
- Java 编程下通过反射获取一个类中的方法名和对应参数名
- 一个简单的反射例子(通过类型或者类型参数获取类的名称)
- c#通过反射获取类上的自定义特性
- C#中通过反射获取类中非公有成员
- C# --通过枚举获取系统颜色
- 重载和覆盖的区别,通过反射获取泛型实际类型,枚举要点,五个最常用的集合类之间的区别和联系,final总结
- C#通过反射获取按钮的文本