获取指定类型如枚举/属性上自定义attribue值
2017-04-17 17:18
561 查看
有时候我们用数字来区分一些类型,如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 //第一
相关文章推荐
- 使用反射获取枚举的自定义属性Attribute
- ADO.NET Entity FrameWork 属性类型映射到自定义枚举
- 为枚举(enum)类型添加的备注属性,并且获取枚举的属性值
- NET中反射实现 可空类型 与基础类型的转换 以及获取指定属性的大小问题
- 使用反射获取枚举的自定义属性Attribute及其他使用方式
- 如何为自定义属性指定format类型
- 【转】NET中反射实现 可空类型 与基础类型的转换 以及获取指定属性的大小问题
- c# 自定义属性 属性类型为枚举
- 使用Arrays.sort()对自定义的entity按指定属性进行排序。
- javascript根据元素自定义属性获取元素,操作元素
- java反射遍历实体类属性和类型,并赋值和获取值
- hibernate 4 映射组件属性 自定义类型
- java获取对象属性类型、属性名称、属性值
- 控件自定义属性获取及赋予事件方法
- 关于H5中自定义属性的设置和获取
- WCF RIA Service实体类的自定义复杂类型属性在客户端不可见
- 获取表单所有元素的类型或者属性或者是value
- 通过反射获取属性名和属性类型
- Android自定义属性,attr format取值类型
- 获取一个类型中的某个属性的值