msdn:ms-help://MS.MSDNQTR.2003FEB.2052/csspec/html/vclrfcsharpspec_17_1_1.htm

AttributeUsage 属性(第 17.4.1 节)用于描述使用属性类的方式。

AttributeUsage 具有一个定位参数(第 17.1.2 节),该参数使属性类能够指定自己可以用在那种声明上。示例

using System;
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Interface)]
public class SimpleAttribute: Attribute
{
...
}

定义了一个名为 SimpleAttribute 的属性类,此属性类只能放在类声明和接口声明上。示例

[Simple] class Class1 {...}
[Simple] interface Interface1 {...}

显示了 Simple 属性的几种用法。虽然此属性是用名称 SimpleAttribute 定义的,但在使用时可以省略 Attribute 后缀,从而得到简称 Simple。因此,上例在语义上等效于:

[SimpleAttribute] class Class1 {...}
[SimpleAttribute] interface Interface1 {...}

AttributeUsage 还具有一个名为 AllowMultiple 的命名参数(第 17.1.2 节),此参数用于说明对于某个给定实体,是否可以多次使用该属性。如果属性类的 AllowMultiple 为 true,则此属性类是多次性属性类,可以在一个实体上多次被应用。如果属性类的 AllowMultiple 为 false 或未指定的,则此属性类是一次性属性类,在一个实体上最多只能使用一次。

示例

using System;
[AttributeUsage(AttributeTargets.Class, AllowMultiple = true)]
public class AuthorAttribute: Attribute
{
private string name;
public AuthorAttribute(string name) {
this.name = name;
}
public string Name {
get { return name; }
}
}

定义了一个名为 AuthorAttribute 的多次性属性类。示例

[Author("Brian Kernighan"), Author("Dennis Ritchie")]
class Class1
{
...
}

显示了一个两次使用 Author 属性的类声明。

AttributeUsage 具有另一个名为 Inherited 的命名参数,此参数指示在基类上指定该属性时,该属性是否也会被从此基类派生的类所继承。如果属性类的 Inherited 为 true,则该属性会被继承。如果属性类的 Inherited 为 false 或者未指定,那么该属性不会被继承。

没有附加 AttributeUsage 属性的属性类 X,例如

using System;
class X: Attribute {...}

等效于下面的内容:

using System;
[AttributeUsage(
AttributeTargets.All,
AllowMultiple = false,
Inherited = true)
]
class X: Attribute {...}

特性入门AttributeUsage相关推荐

  1. AttributeUsage特性和特性标识符

    AttributeUsage特性 除了可以定制自己的特性来注释常用的C#类型外,您可以用AttributeUsage特性来定义您想怎样使用这些特性.AttributeUsage特性采用如下的调用惯例: ...

  2. 2018-8-28-win10-uwp-MVVM入门

    title author date CreateTime categories win10 uwp MVVM入门 lindexi 2018-08-28 15:37:52 +0800 2018-2-13 ...

  3. c#快速入门~在java基础上,知道C#和JAVA 的不同即可

    ☺ 观看下文前提:如果你的主语言是java,现在想再学一门新语言C#,下文是在java基础上,对比和java的不同,快速上手C#,当然不是说学C#的前提是需要java,而是下文是从主语言是java的情 ...

  4. C#编码实践:使用委托和特性调用指定函数

    2019独角兽企业重金招聘Python工程师标准>>> 建立一个C#控制台应用程序AttributeTest. 建立一个类Operations,代码如下: namespace Att ...

  5. C#类型反射、晚期绑定、特性编程的使用背景与分析

    任何编程语言的任何特点都是有存在的道理的,C#中有些特点也许我们不求甚解的用过,但是如果知道它的使用背景与原理,使用起来将更加得心应手.本文主要分析的就是C#中的类型反射.晚期绑定.特性编程.阐释为什 ...

  6. C# 特性(Attribute)

    个人定义:不侵入对象的情况下,添加对象附注信息. 官方定义:将预定义的系统信息或用户定义的自定义信息与目标元素相关联.目标元素可以是程序集.类.构造函数.委托.枚举.事件.字段.接口.方法.可移植可执 ...

  7. C# 特性 Attribute

    特性就是在类的类名称.属性.方法等上面加一个标记,使这些类.属性.方法等具有某些统一的特征,从而达到某些特殊的需要.举个小栗子:方法的异常捕捉,你是否还在某些可能出现异常的地方(例如数据库的操作.文件 ...

  8. 第十一节:特性(常见的特性标签、自定义特性、特性的使用案例)

    一. 基本概念 1. 什么是特性? MSDN官方给出的定义时:公共语言运行时允许添加类似关键字的描述声明,叫做特性,它对程序中的元素进行标注,如类型.字段.方法和属性等.Attribute和Micro ...

  9. Attribute特性定义及应用

    目录 一.前期准备 二.特性概念 三.特性案例 1.基础特性 -- 自定义 2.特性实战 -- 自定义 3.常用特性类 -- 官方 1.ObsoleteAttribute 2.AttributeUsa ...

最新文章

  1. UICollectionView
  2. 深度学习领域最常用的10个激活函数,一文详解数学原理及优缺点
  3. 基于Swoole和Redis实现的并发队列处理系统
  4. Alibaba-Dexposed Bug框架原理及源码解析
  5. 期刊投稿状态_SCI投稿全过程解析及拒稿后处理对策
  6. Python range 函数 - Python零基础入门教程
  7. HDU6092——Rikka with Subset 【dp】
  8. 全市场等权中位数_A股市场周内效应研究
  9. MySQL8.0内存相关参数介绍
  10. WebScarab使用说明
  11. Qt拖放操作和打印操作
  12. 干货 | 深度文本分类综述(12篇经典论文)
  13. 学习笔记(02):Qt视频教程-基础实例进阶-网页爬虫-图片抓取
  14. 楼宇跨界智能家居未来前景如何有待考证
  15. 8.21: Hackday、慈善x快速迭代
  16. Android ANR:executing service com.xxx.yyy/cn.jpush.android.service.PushService
  17. IDEA SpringBoot引入外部jar并打包
  18. SharpDevelop源码分析之插件
  19. pandas自动化实战小任务1--对excel表格分 供应商 付款年月 进行汇总(涉及根据即有相同也有不同的index的表格合并)公司的数据
  20. 爬取电影天堂最新电影的名称和下载链接

热门文章

  1. Linux运维 第二阶段 (一)linux基础概念及常用命令
  2. C#将数据写入本地缓存
  3. vulnhub靶机-DC3-Writeup
  4. DNS协议的客户端实现
  5. 思维定势导致犯的低级错误(碎碎念)一
  6. 浏览器解析html过程,浏览器解析HTML,CSS过程
  7. 如何进行通达信交易接口连接?
  8. 详解line-height与vertical-algin
  9. 可控制的启动关闭跑马灯效果
  10. Creating a 3D Logo in Photoshop Photoshop系列教程之如何创建一个3D Logo Lynda课程中文字幕