给枚举设置特性
定义特性
[AttributeUsage(AttributeTargets.Enum | AttributeTargets.Field, AllowMultiple = false, Inherited = false)]
public class MemberStrAttribute : Attribute
{
public MemberStrAttribute(string str)
{
MemberStr = str;
}
public string MemberStr { get; private set; }
}
public static class EnumExtend
{
public static string MemberStr(this Enum value)
{
FieldInfo fi = value.GetType().GetField(value.ToString());
MemberStrAttribute[] attrs =
fi.GetCustomAttributes(typeof(MemberStrAttribute), false) as MemberStrAttribute[];
if (attrs.Length > 0) return attrs[0].MemberStr;
return value.ToString();
}
}
使用方法
public enum deliveryCarrier
{
[MemberStr("顺丰")]
SF,
[MemberStr("EMS标准快递")]
EMS,
[MemberStr("宅急送")]
ZJS,
[MemberStr("邮政快递包裹")]
POSTB,
[MemberStr("德邦快递")]
DBKD,
[MemberStr("联邦")]
FEDEX,
[MemberStr("极兔")]
HTKY,
[MemberStr("圆通")]
YTO,
[MemberStr("中通")]
ZTO,
[MemberStr("韵达")]
YUNDA,
[MemberStr("申通")]
STO
}
获取特性值
string cpname = Platform.MemberStr();