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