C#知识点十二

C#特性(Attribute):
❶特性(Attribute)是用于在运行时传递程序中各种元素(比如类、方法、结构、枚举、组件等)的行为信息的声明性标签;可以通过使用特性向程序添加声明性信息。一个声明性标签是通过放置在它所应用的元素前面的方括号([ ])来描述的。
·特性(Attribute)也用于添加元数据,如编译器指令和注释、描述、方法、类等其他信息。.Net 框架提供了两种类型的特性:预定义特性和自定义特性。
规定语法:
[attribute(positional_parameters, name_parameter = value, …)]
element
·特性(Attribute)的名称和值是在方括号内规定的,放置在它所应用的元素之前;positional_parameters 规定必需的信息,name_parameter 规定可选的信息。
❷预定义特性(Attribute)(.Net框架所提供的三种定义特性):
一、AttributeUsage :描述了如何使用一个自定义特性类;规定了特性可应用到的项目的类型;语法:
[At tributeUsage(
validon,
AllowMultiple=allowmultiple,
Inherited=inherited )]

其中:(1)参数 validon 规定特性可被放置的语言元素。它是枚举器 AttributeTargets 的值的组合。默认值是 AttributeTargets.All。
(2)参数 allowmultiple(可选的)为该特性的 AllowMultiple 属性(property)提供一个布尔值。如果为 true,则该特性是多用的。默认值是 false(单用的)。
(3)参数 inherited(可选的)为该特性的 Inherited 属性(property)提供一个布尔值。如果为 true,则该特性可被派生类继承。默认值是 false(不被继承)。
二、Conditional :标记了一个条件方法,其执行依赖它定的预处理标识符;它会引起方法调用的条件编译,取决于指定的值,比如Debug或Trace;例如:当调试代码时显示变量的值;语法:
[Conditional(
conditionalSymbol
)]
三、Obsolete :标记了不应被使用的程序实体;它可以让其通知编译器丢弃某个特定的目标元素;例如:第一个新方法被用在一个类中,但仍然想要保持类中的旧方法,可以通过显示一个应该使用新方法,而不是旧方法的消息,来把它标记为obsolete(过时的);语法:
[Obsolete( message
)]
[Obsolete( message,
Iserror
)]
其中:(1)参数 message,是一个字符串,描述项目为什么过时的原因以及该替代使用什么。
(2)参数 iserror,是一个布尔值。如果该值为 true,编译器应把该项目的使用当作一个错误。默认值是 false(编译器生成一个警告)。当尝试编译该程序时,编译器会给出一个错误消息说明: Don’t use OldMethod, use NewMethod instead
❸创建自定义特性(Attribute):.Net框架允许创建自定义特性,用于存储声明性的信息;且可在运行时被检索;该信息根据设计标准和应用程序需要,可与任何目标元素相关;
创建并使用自定义特性包含的四个步骤:1、声明自定义特性2、构建自定义特性3、在目标程序元素上应用自定义特性4、通过反射访问特性5、最后一个步骤包含编写一个简单的程序来读取元数据以便查找各种符号。元数据是用于描述其他数据的数据和信息。该程序应使用反射来在运行时访问特性(1)声明自定义特性:一个新的自定义特性应派生自System.Attribute 类(2)构建自定义特性:构建一个名为 DeBugInfo 的自定义特性,该特性将存储调试程序获得的信息;它存储下面的信息:bug 的代码编号 2、辨认该 bug 的开发人员名字 3、最后一次审查该代码的日期 4、一个存储了开发人员标记的字符串消息 。DeBugInfo 类将带有三个用于存储前三个信息的私有属性(property)和一个用于存储消息的公有属性(property)。所以 bug 编号、开发人员名字和审查日期将是 DeBugInfo 类的必需的定位( positional)参数,消息将是一个可选的命名(named)参数;每个特性必须至少有一个构造函数。必需的定位( positional)参数应通过构造函数传递(3)应用自定义:通过把特性放置在紧接着它的目标之前,来应用该特性。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值