C# 枚举特性使用样例

 public class RemarkAttribute : Attribute
    {
        private string _Remark { get; set; }
        public RemarkAttribute(string remark)
        {
            _Remark = remark;
        }
        public string GetRemark()
        {
            return _Remark;
        }
    }

 public enum  Number
    {
        /// <summary>
        /// 第一
        /// </summary>
        [Remark("第一")]
        Frist =0,
        /// <summary>
        /// 第二
        /// </summary>
        [Remark("第二")]
        Second =1,
        /// <summary>
        /// 第三 
        /// </summary>
        [Remark("第三")]
        Thrid =2

    }

   public static class NumberExtend {
        public static string GetRemark(this  Number num ) {
            Type type = num.GetType();
            FieldInfo fieldInfo = type.GetField(num.ToString());//得到字段信息--特性在IL本质是一个字段
            if (fieldInfo.IsDefined(typeof(RemarkAttribute),true))//判断字段是否包含此特性
            {
                RemarkAttribute attr = (RemarkAttribute)fieldInfo.GetCustomAttribute(typeof(RemarkAttribute), true);//得到特性信息
                return attr.GetRemark();
            }
            else
            {
                return num.ToString();
            }
        }
    }

 

 

调用的时候 

 

   var info= Number.Frist.GetRemark();

 

定义 特性 --第三方使用特性 ---然后触发特性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值