特性入门AttributeUsage
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相关推荐
- AttributeUsage特性和特性标识符
AttributeUsage特性 除了可以定制自己的特性来注释常用的C#类型外,您可以用AttributeUsage特性来定义您想怎样使用这些特性.AttributeUsage特性采用如下的调用惯例: ...
- 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 ...
- c#快速入门~在java基础上,知道C#和JAVA 的不同即可
☺ 观看下文前提:如果你的主语言是java,现在想再学一门新语言C#,下文是在java基础上,对比和java的不同,快速上手C#,当然不是说学C#的前提是需要java,而是下文是从主语言是java的情 ...
- C#编码实践:使用委托和特性调用指定函数
2019独角兽企业重金招聘Python工程师标准>>> 建立一个C#控制台应用程序AttributeTest. 建立一个类Operations,代码如下: namespace Att ...
- C#类型反射、晚期绑定、特性编程的使用背景与分析
任何编程语言的任何特点都是有存在的道理的,C#中有些特点也许我们不求甚解的用过,但是如果知道它的使用背景与原理,使用起来将更加得心应手.本文主要分析的就是C#中的类型反射.晚期绑定.特性编程.阐释为什 ...
- C# 特性(Attribute)
个人定义:不侵入对象的情况下,添加对象附注信息. 官方定义:将预定义的系统信息或用户定义的自定义信息与目标元素相关联.目标元素可以是程序集.类.构造函数.委托.枚举.事件.字段.接口.方法.可移植可执 ...
- C# 特性 Attribute
特性就是在类的类名称.属性.方法等上面加一个标记,使这些类.属性.方法等具有某些统一的特征,从而达到某些特殊的需要.举个小栗子:方法的异常捕捉,你是否还在某些可能出现异常的地方(例如数据库的操作.文件 ...
- 第十一节:特性(常见的特性标签、自定义特性、特性的使用案例)
一. 基本概念 1. 什么是特性? MSDN官方给出的定义时:公共语言运行时允许添加类似关键字的描述声明,叫做特性,它对程序中的元素进行标注,如类型.字段.方法和属性等.Attribute和Micro ...
- Attribute特性定义及应用
目录 一.前期准备 二.特性概念 三.特性案例 1.基础特性 -- 自定义 2.特性实战 -- 自定义 3.常用特性类 -- 官方 1.ObsoleteAttribute 2.AttributeUsa ...
最新文章
- UICollectionView
- 深度学习领域最常用的10个激活函数,一文详解数学原理及优缺点
- 基于Swoole和Redis实现的并发队列处理系统
- Alibaba-Dexposed Bug框架原理及源码解析
- 期刊投稿状态_SCI投稿全过程解析及拒稿后处理对策
- Python range 函数 - Python零基础入门教程
- HDU6092——Rikka with Subset 【dp】
- 全市场等权中位数_A股市场周内效应研究
- MySQL8.0内存相关参数介绍
- WebScarab使用说明
- Qt拖放操作和打印操作
- 干货 | 深度文本分类综述(12篇经典论文)
- 学习笔记(02):Qt视频教程-基础实例进阶-网页爬虫-图片抓取
- 楼宇跨界智能家居未来前景如何有待考证
- 8.21: Hackday、慈善x快速迭代
- Android ANR:executing service com.xxx.yyy/cn.jpush.android.service.PushService
- IDEA SpringBoot引入外部jar并打包
- SharpDevelop源码分析之插件
- pandas自动化实战小任务1--对excel表格分 供应商 付款年月 进行汇总(涉及根据即有相同也有不同的index的表格合并)公司的数据
- 爬取电影天堂最新电影的名称和下载链接