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

 

posted @ 2023-03-01 15:35  啊樊  阅读(130)  评论(0)    收藏  举报