第11章特征与命名空间 111特征 11.2命名空间
1 第11章 特征与命名空间 11.1 特征 11.2 命名空间
特征( attribute)提供了一种为类型实体 (如类、结构、接口、方法、属性等)描 述附加信息的方法 使用特征通常包括三个步骤: (1)定义特征 (2)使用特征 (3)查询特征
2 ❖ 特征(attribute)提供了一种为类型实体 (如类、结构、接口、方法、属性等)描 述附加信息的方法。 ❖ 使用特征通常包括三个步骤: (1)定义特征 (2)使用特征 (3)查询特征
11.1.1特征的定义 特征类在使用前需要进行定义,定义的一般 格式为: AttributeUsage(Attribute Targets枚举值) public class特征类名: Attribute ∥定义的特征类体
3 11.1.1 特征的定义 ❖ 特征类在使用前需要进行定义,定义的一般 格式为: [AttributeUsage(AttributeTargets 枚举值)] public class 特征类名: Attribute { …//自定义的特征类体 }
11.1.2特征的使用 1.使用特征 不管是使用.NET框架提供的预定义特征类或 使用用户自定义特征类,只需把要使用的特 征放在所要说明的代码实体定义之前的方括 “中,并提供必要的参数即可 令可以用显式说明符将特征关联到所需说明的 代码实体(又称特征目标)上,其格式为: [显式说明符:特征列表]
4 11.1.2 特征的使用 1.使用特征 ❖ 不管是使用.NET框架提供的预定义特征类或 使用用户自定义特征类,只需把要使用的特 征放在所要说明的代码实体定义之前的方括 号“[]”中,并提供必要的参数即可。 ❖ 可以用显式说明符将特征关联到所需说明的 代码实体(又称特征目标)上,其格式为: [显式说明符:特征列表]
2.使用多个特征 可以分别列出每一个特征,每个特征各占 令也可以将各个特征放在同一行中,之间用 逗号隔开 3.使用带参数的特征 令使用带参数的特征的一般格式为: 特征类名(位置参数表,命名参数表)]
5 2.使用多个特征 ❖ 可以分别列出每一个特征,每个特征各占 一行。 ❖ 也可以将各个特征放在同一行中,之间用 逗号隔开。 3.使用带参数的特征 ❖ 使用带参数的特征的一般格式为: [特征类名(位置参数表,命名参数表)]
11.1.3特征的查询 1.使用 GetCustom Attribute或 GetCustomAttributes方法查询 ☆只查询指定代码实体上的指定特征类型的特征 信息,而不会去查询该代码实体的成员上的特 征 2.使用反射机制查询 反射方法可以查询代码实体成员上的特征 返回目录
6 11.1.3 特征的查询 1.使用GetCustomAttribute或 GetCustomAttributes方法查询 ❖ 只查询指定代码实体上的指定特征类型的特征 信息,而不会去查询该代码实体的成员上的特 征。 2.使用反射机制查询 ❖ 反射方法可以查询代码实体成员上的特征。 返回目录
命名空间用于在C#应用程序中定义作用域 使用命名空间有下列优点: (1)程序代码分散在多个文件中 (2)可以在命名空间中增加新类,而不影响 其他已存在于该命名空间中的类。 (3)可以构成阶层的类组织结构,即一个命 名空间可包含其他命名空间,形成层式结 构,更易于分组与管理
7 ❖ 命名空间用于在C#应用程序中定义作用域。 ❖ 使用命名空间有下列优点: (1)程序代码分散在多个文件中。 (2)可以在命名空间中增加新类,而不影响 其他已存在于该命名空间中的类。 (3)可以构成阶层的类组织结构,即一个命 名空间可包含其他命名空间,形成层式结 构,更易于分组与管理
11.2.1定义命名空间 冷语句格式为: namespace命名空间名 ∥命名空间的成员(其他命名空间或类型的定 义
8 11.2.1 定义命名空间 ❖ 语句格式为: namespace 命名空间名 { …//命名空间的成员(其他命名空间或类型的定 义) }
11.22完全限定名 在一个命名空间中可以包含其他命名空间, 这种层次化的命名空间称为嵌套命名空间, 另外命名空间和类也可以构成程序的嵌套, 往往用命名空间的完全限定名来表示这种层 次的命名空间 在相同的命名空间中不能存在相同名称的类 型或命名空间,在不同的命名空间中可以存 在相同名称的类型或命名空间
9 11.2.2 完全限定名 ❖ 在一个命名空间中可以包含其他命名空间, 这种层次化的命名空间称为嵌套命名空间, 另外命名空间和类也可以构成程序的嵌套, 往往用命名空间的完全限定名来表示这种层 次的命名空间。 ❖ 在相同的命名空间中不能存在相同名称的类 型或命名空间,在不同的命名空间中可以存 在相同名称的类型或命名空间
112.3 usIng语句 冷用户可以通过 using调用命名空间,其一般格 式如下: usIng命名空间名; ∥一般 usIng语句 usIng[别名=命名空间名;别名 usIng语句 10
10 11.2.3 using语句 ❖ 用户可以通过using调用命名空间,其一般格 式如下: using 命名空间名; //一般using语句 using [别名=]命名空间名;//别名using语句