Attribute 类介绍,例子:对枚举的字段添加Attribute

    CSDN广告是越来越多了,所有博客笔记不再更新,新网址 DotNet笔记

     Attribute 类将预定义的系统信息或用户定义的自定义信息与目标元素相关联。目标元素可以是程序集、类、构造函数、委托、枚举、事件、字段、接口、方法、可移植可执行文件模块、参数、属性 (Property)、返回值、结构或其他属性 (Attribute)。

    属性所提供的信息也称为元数据。元数据可由应用程序在运行时进行检查以控制程序处理数据的方式,也可以由外部工具在运行前检查以控制应用程序处理或维护自身的方式。例如,.NET Framework 预定义属性类型并使用属性类型控制运行时行为,某些编程语言使用属性类型表示 .NET Framework 公共类型系统不直接支持的语言功能。

    所有属性类型都直接或间接地从 Attribute 类派生。属性可应用于任何目标元素;多个属性可应用于同一目标元素;并且属性可由从目标元素派生的元素继承。使用 AttributeTargets 类可以指定属性所应用到的目标元素。

例子:

    /// <summary>
    /// 定义一个Attribute类,作用域为字段(tips:可以是枚举的字段,也可以是类的字段)
    /// </summary>
    [AttributeUsage(AttributeTargets.Field)]
    public   class EnumDisplayName : Attribute
    {
        public string displayName;
        
    }

    /// <summary>
    /// 定义一个测试枚举
    /// </summary>
    public  enum TestEnum
    {
        [EnumDisplayName(displayName = "第1个")]
        One,
        [EnumDisplayName(displayName = "第2个")]
        Two,
        [EnumDisplayName(displayName = "第3个")]
        Three
    }

然后我们定义一个方法用来获取displayName

/// <summary>
        /// 获取枚举TestEnum的displayName
        /// </summary>
        /// <param name="oa">枚举项</param>
        /// <returns>枚举项的displayName</returns>
        public static string GetOperatorActions(TestEnum oa)
        {
            string disName = "";
            Type type = oa.GetType();
            string name = Enum.GetName(type, oa);
            FieldInfo field = type.GetField(name);
            EnumDisplayName attribute = Attribute.GetCustomAttribute(field, typeof(EnumDisplayName)) as EnumDisplayName;
            disName = attribute == null ? null : attribute.displayName;
            return disName;
        }

测试一下:

        static void Main(string[] args)
        {
            //遍历枚举
            foreach (TestEnum suit in Enum.GetValues(typeof(TestEnum)))
            {
                GetOperatorActions(suit);
                Console.WriteLine((int)suit + " " +  GetOperatorActions(suit) + ":" + suit.ToString());
            }
        }


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值