Remark特性扩展

Remark特性扩展

1.假设程序中有一个枚举类型UserState:

public enum UserState
    {
        //通过增加特性,扩展Remake

        /// <summary>
        /// 正常
        /// </summary>
        [Remark("正常")]
        Normal =0,
        /// <summary>
        ///冻结
        /// </summary>
        [Remark("冻结")]
        Frezeen =2,
        /// <summary>
        /// 删除
        /// </summary>
        Delete=4
    }

我们想要在程序中使用的是枚举值,但是提供给UI界面的是另外的字符串,就可以用到特性加扩展方法来实现。

2.增加一个RemakeAttribute特性

 [AttributeUsage(AttributeTargets.Enum | AttributeTargets.Field)]
    public class RemarkAttribute:Attribute
    {
        private string _Remake=null;
        public RemarkAttribute(string remake)
        {
            this._Remake = remake;
        }

        public string GetRemark()
        {
            return this._Remake;
        }
    }

3.增加一个扩展方法AttributeExtension

 public static string GetRemark(this Enum value)
        {
            Type type = value.GetType();
            FieldInfo field = type.GetField(value.ToString());
            if (field.IsDefined(typeof(RemarkAttribute), true))
            {
                RemarkAttribute attribute = (RemarkAttribute)field.GetCustomAttribute(typeof(RemarkAttribute), true);
                return attribute.GetRemark();
            }
            else
            {
                return value.ToString();
            }
        }

4.前端使用:

           try
            {
                UserState userState = UserState.Normal;            
                Console.WriteLine(userState.GetRemark());                    
                Console.WriteLine(UserState.Frezeen.GetRemark());
                Console.WriteLine(UserState.Delete.GetRemark());
                Console.Read();
            }
            catch (Exception)
            {

                throw;
            }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值