为了能到远方,脚下的每一步都不能少.|

啊樊

园龄:12年11个月粉丝:0关注:1

C#获取属性上的特性提示信息

var normal = UserStuta.Normal;
                var frozen = UserStuta.Frozen;
                var deleted = UserStuta.Deleted;
                string strnormal = RemarkExtension.GetRemark(normal); //获取枚举描述
                string strfrozen = RemarkExtension.GetRemark(frozen);
                string strdeleted = deleted.GetRemark();
第一步 封装一个特性
[AttributeUsage(AttributeTargets.Field) 表示此特性只能用在属性上
复制代码
[AttributeUsage(AttributeTargets.Field)]
    public class RemarkAttribute : Attribute
    {
        public string Remark { get; private set; }

        public RemarkAttribute(string remark)
        {
            this.Remark = remark;
        }
    }
复制代码
第二步 添加一个反射方法来获取汉字
复制代码
 public static class RemarkExtension
    {
        public static string GetRemark(this Enum @enum) //扩展方法
        {
            Type type = @enum.GetType();
            FieldInfo? fileInfo = type.GetField(@enum.ToString());
            if (fileInfo != null)
            {
                if (fileInfo.IsDefined(typeof(RemarkAttribute), true))
                {
                    RemarkAttribute remarkAttribute = (RemarkAttribute)fileInfo.GetCustomAttribute(typeof(RemarkAttribute), true);
                    return remarkAttribute.Remark;
                }
            }
            return @enum.ToString();
        }
    }
复制代码

 

本文作者:啊樊

本文链接:https://www.cnblogs.com/FanJunCheng521/p/17168441.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   啊樊  阅读(108)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起