属性和反射
属性是将元数据信息和行为添加到应用程序代码中的简单技术。属性是允许您将声明信息添加到程序的元素。此声明信息在运行时用途广泛,可使用应用程序开发工具在设计时使用。
介绍属性
对象是由其属性值描述的。例如,汽车可以使用它的构造、型号或颜色来描述。类似地,C#程序具有某些描述和影响它的行为的属性,例如,编译器指令。
属性是证明标记,用于将程序元素(例如:类、枚举器和程序集)的行为信息传递到运行时。声明标记是由位于元素定义(例如类或方法)之上的方括号([ ])描述的。这些标签有助于扩展语言。
属性用于向程序添加元数据(如:编译器指令)和其他信息(如:注释、描述、方法和类)。
.NET Framework具有许多预定义属性。检查预定义属性和作用于其包含的值的代码,也属于运行时和.NET Framework软件开发工具包(SDK)的一部分。
应用属性
属性被应用到不同的代码元素。这些元素包括程序集、模块、类、结构、枚举、构造函数、方法、属性、字段、事件、接口、参数、返回值和委托。关于属性的信息存储在与它们相关联的元素的元数据中。
以下语法指定了一个属性:
[attribute(positional_parameters,name_parameter = value, ...)]
element
在上面的语法中,属性名及其值在应用属性的元素前的方括号([ ])内被指定。属性可能需要一个或多个参数,定位参数或者命名参数。定位参数用于指定属性的重要信息,而命名参数用于传递属性的可选信息。
.NET Framework支持将以下两个类型的属性用于C#程序中:
- 预定义属性:这些属性被作为公共语言运行时(CLR)而提供,且被集成到.NET Framework中。
- 自定义属性:这些属性是根据需求创建的属性。
注释
程序集时.NET Framework应用程序的构建块。它构成部署的基本单元。它还包含描述内部版本号以及他们包含的所有数据和对象类型详细信息的元数据。程序集的示例包括.exe和.dll文件。
小问题:
______参数被用于在属性中传递可选信息。
答案:
Named
使用预定义属性
.NET Framework提供的一些常用预定义属性有:
- Conditional:造成根据特定值(如:Debug或Trace)对方法调用使用条件编译。例如,在调试代码时,它显示变量的值。但是,这个属性仅决定当一个方法被调用的时候,将发生的动作。如果需要方法的条件编译,要在代码中使用#if和#endif指令。您可以应用condition属性的方法会受大量的限制。尤其是,它们的返回类型必须是void,并且不能被标记为覆盖,方法的实现应该来自于继承的接口。请思考以下代码行:
[