给枚举设置特性

121 阅读1分钟

给枚举设置特性

定义特性

 [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();