zoukankan      html  css  js  c++  java
  • C# 获取自定义特性值

    自定义一个特性

    /// <summary>
    /// 枚举备注特性
    /// </summary>
    public class EnumRemarkAttribute : Attribute
    {
       public string Remark { get; set; }
       public EnumRemarkAttribute(string remark)
       {
           this.Remark = remark;
       }
    }
    

    特性对应枚举使用

    
    /// <summary>
    /// 用户学历
    /// </summary>
    public enum UserEducation
    {
      /// <summary>
      /// 小学
      /// </summary>
      [EnumRemark("小学")]
      PrimarySchool = 1,
      /// <summary>
      /// 高中
      /// </summary>
      [EnumRemark("高中")]
      HighSchool = 2,
      /// <summary>
      /// 大学
      /// </summary>
      [EnumRemark("大学")]
      University = 3
    }
    

    新增一个枚举扩展方法

    public static class EnumRemark
    {
        public static string GetRemark(this Enum enumInfo)
        {
            Type type = enumInfo.GetType();
            //获取字段信息
            FieldInfo field = type.GetField(enumInfo.ToString());
            //检查字段是否含有指定特性
            if (field.IsDefined(typeof(EnumRemarkAttribute), true))
            {
                //获取字段上的自定义特性
                EnumRemarkAttribute remarkAttribute = (EnumRemarkAttribute)field.GetCustomAttribute(typeof(EnumRemarkAttribute));
                return remarkAttribute.Remark;
            }
            else
            {
                return enumInfo.ToString();
            }
        }
    }
    

    使用Demo

    static void Main(string[] args)
    {
        UserEducation userEducation = UserEducation.HighSchool;
        Console.WriteLine((int)userEducation);          //2
        Console.WriteLine(userEducation.ToString());    //HighSchool
        Console.WriteLine(userEducation.GetRemark());   //高中;
    }
    
  • 相关阅读:
    centos7 go ENV 部署
    sock5客户端解密数据流
    sock5协议转换http协议工具polipo使用笔记(Centos7)
    【转】nc 使用说明
    前端移动框架Framework7入门
    Ext.NET-WebForm之TreePanel组件
    在VS2019创建WebForm程序,开个箱
    web认证
    ABP框架是怎么一回事呢?
    C#4并行计算
  • 原文地址:https://www.cnblogs.com/Alicia-meng/p/15529500.html
Copyright © 2011-2022 走看看