下载此文档

C#课件:特性.ppt


文档分类:医学/心理学 | 页数:约11页 举报非法文档有奖
1/11
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/11 下载此文档
文档列表 文档介绍
第12章特性
特性的基本概念
特性的使用
预定义通用特性类
自定义特性类
使用反射访问特性

C#,称之为特性(Attribute)类
一个关于特性类的声明定义一种新特性,特性可以被放置在其他声明上,即附加到各种程序实体(包括类型、方法、属性等),以添加元数据信息,如编译器指令或数据描述
特性主要为编译器提供额外的信息,编译器可以通过这些附加特性,自动生成相应的代码,从而实现特定的功能。程序代码也可以通过反射技术,在运行时环境中检索这些特性信息,以实现特定的操作
C#语言包括下列2种形式的特性:
公共语言运行库(CLR)中预定义的特性
自定义特性,用于向代码中添加附加信息,该信息能够以编程方式检索
特性类可以具有定位参数(positional parameter)和命名参数(named parameter)列表

将特性附加到程序实体的语法为:将括在方括号中的特性名置于其适用的实体声明之前。例如,C#外部方法的声明需要通过DllImport 特性以引用由DLL(动态链接库)实现的外部函数
根据约定,所有特性类都以单词“Attribute”结束,以区分于其它类。但是,在代码中,可以省略特性后缀“Attribute”
预定义通用特性类
ConditionalAttribute类:条件方法
ObsoleteAttribute类:标记为一个建议不再使用的实体
AttributeUsageAttribute类
全局特性
ConditionalAttribute类
Conditional特性是ConditionalAttribute的别名,可应用于类或结构声明中的返回类型为void的方法。
用Conditional特性修饰的方法是条件方法
Conditional特性通过测试条件编译符号来确定适用的条件。标记为条件方法的调用取决于是否定义了预处理符号:如果定义了该符号,则包含调用;否则省略调用
ObsoleteAttribute类
Obsolete特性是ObsoleteAttribute的别名,可应用于除程序集、模块、参数或返回值以外的所有程序元素,将该实体标记为一个建议不再使用的实体,即该元素在产品的未来版本中将被移除
当调用使用Obsolete特性标记的实体时,编译器会生成警告信息;如果Obsolete特性的第2个参数为true时,则产生错误信息。
AttributeUsageAttribute类
AttributeUsage特性是AttributeUsageAttribute 的别名,应用于自定义特性类,以控制如何应用新特性
用 AttributeUsage特性修饰的类必须直接或间接从 派生,否则将发生编译时错误
AttributeUsage特性可以设置3个参数:
ValidOn参数
AllowMultiple参数
Inherited参数
全局特性
全局特性适用于整个程序集或模块。全局特性在源代码中出现在顶级using指令之后,类型或命名空间声明之前
自定义特性类
,可以创建自定义特性类。特性类直接或间接地从 Attribute 派生,有助于方便快捷地在元数据中标识特性定义。
特性类的声明遵循下列规则:
派生类的类名一般采用XXXAttribute的命名规范,类名就是特性名。
构造函数的参数是自定义特性的定位参数。
任何公共读写字段或属性都是命名参数。
使用AttributeUsage特性指定特性类的限制条件
使用反射访问特性
C#通过反射技术来检索用自定义特性定义的信息。首先通过GetType方法或者typeof关键字来获取类型;然后通过GetCustomAttributes方法获取所应用的自定义特性的对象数组;最后通过自定义特性的对象数组进行相应的操作处理

C#课件:特性 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数11
  • 收藏数0 收藏
  • 顶次数0
  • 上传人1017848967
  • 文件大小0 KB
  • 时间2015-11-23
最近更新