第六部分 属性3---------------

    AttributeUsage属性

    除了用于标注常规c#类型的自定义属性以外,还可以使用AttributeUsage属性定义你使用这些属性的方式.文档记录的AttributeUsage属性调用惯例如下:

[AttributeUsage(

     validon,

    AllowMultiple=allowmultiple,

    Inherited=inherited

)]

如你所见,识别位置参数和命名过的参数是很容易的.我们强烈建议你以这种方式对属性进行文档记录,这样,属性的用户不必从头到尾查看属性类的源代码,并且可以找到作为命名过的参数使用的公共读/写字段和特性.

 定义属性目标

再看看AttributeUsage属性,请注意validon参数是一个位置参数,因此是必须的.这个参数用于指定属性可以附着于哪些类型.实际上,AttributeUsage属性中的validon参数是AttributeTagets类型的,这个枚举值的定义如下:

          public enum AttributeTargets

   {

                Assembly=0x0001,

                Module=0x0002,

                Class=0x0004,

                Struct=0x0008,

                Enum=0x0010,

                Constructor=0x0020,

                Method=0x0040,

                Property=0x0080,

                Field=0x0100,

                Event=0x0200,

                Interface=0x0400,

                Parameter=0x0800,

                Delegate=0x1000,

                All=Assembly|Module|Class|Struct|Enum|Constructor|

                Method|Property|Field|Event|Interface|Paramter|

                Delegate,

                ClassMembers=Class|Struct|Enum|Constructor|Method|Property|Field|Event|Delegate|Interface,

}

  在使用AttributeUsage属性时可以指定AttributeTargets.All,这样属性就可以附着于AttributeTargets枚举中列出的任何类型.

    何时以及为什么指定validon(AttributeTargets)参数?如果你希望精确地控制一个属性的用法,就需要使用validon参数.

    单次使用和多次使用的属性

    可以使用AttributeUsage将属性定义为单次使用或多次使用.这个决定决定了可以在单个字段上使用某个属性多少次.在默认情况下,所有属性都是单次使用的,所以编译以下代码会导致一个编译器错误;

   public class SomethingAttribute:Attribute

   {

        public SomethingAttribute(string str)

            {}

}

             

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值