Remark特性扩展

Remark特性扩展

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

public enum UserState{//通过增加特性,扩展Remake/// /// 正常/// [Remark("正常")]Normal =0,/// ///冻结/// [Remark("冻结")]Frezeen =2,/// /// 删除/// 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;}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部