您的位置:首页 > 产品设计 > UI/UE

获取指定类型如枚举/属性上自定义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 //第一

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: