您所在的位置: 首页>>读书频道>>设计开发>>.Net系列>>

1.1.5 分部类型

http://book.51cto.com  2008-05-14 17:11  方兵  机械工业出版社  我要评论(0)

1.1.5 分部类型

分部类型定义允许将单个类型(比如某个类)拆分为多个文件。Visual Studio设计器使用此功能将它生成的代码与用户代码分离。

单纯这么说可能不容易理解,那么可以看看在ASP .NET 2.0中aspx网页的代码文件,可以发现每个.cs文件中都有partial关键字,而你再找不到从前由开发环境自动生成的控件声明、事件注册等代码,这些就是分部类的功劳。具体的原理我们后面再讲。同样,也可以在ADO .NET的数据集设计、Windows窗体开发、Web服务包装等地方找到分部类的应用。

或许通常不需要在自己写的类中添加partial关键字来定义分部类,除非遇到如下情况:

(1)处理大型项目时,需要使一个类分布于多个独立文件中,以便让多位程序员同时对该类进行处理。

(2)需要扩展Visual Studio自动生成的类,比如说为DataSet扩展功能,等等。

如果使用分部类,下面这些原则要记清楚:

(1)分布类的生成不依赖于文件名,而是依赖于类名,所以分部类在不同文件中的类名一定要相同,而且一定都要有partial关键字,不要以为其中某一个有了这个关键字就可以了,那样编译是通不过的。

(2)要成为同一类型的各个部分的所有分部类型定义都必须在同一程序集和同一模块(.exe或.dll文件)中进行定义。分部定义不能跨越多个模块。

(3)要成为同一类型的各个部分的所有分部类型定义都必须在同一个命名空间下,如果处在不同的命名空间下,就会编译成不同的类。

(4)和上面的命名空间相同原则类似,如果是嵌套类型做分部,那么它们所嵌套于的类型必须是同一个。尽管可以处于不同的文件中,这取决于它们所嵌套于的类型是否也是分部类型。

(5)不能在成为同一类型的各个部分中编写签名完全相同的方法、属性、字段之类的成员,例如,不能在不同的部分中都写一个DoSomething(int number)的方法,除非它们能成为方法重载。

(6)类名和泛型类型参数在所有的分部类型定义中都必须匹配。泛型类型可以是分部的。每个分部声明都必须以相同的顺序使用相同的参数名。

(7)可以在成为同一类型的各个部分中使用不同的修饰关键字,如internal、public、abstract等,编译时这些关键字将合并,但是它们彼此不能冲突,例如,不能在某一个部分中声明为public,而在另一个部分中声明为internal。

(8)如果在某一个部分中声明该类型是从某一个类型派生出来的,那么在其他部门中,要么可以声明它们继承自同一个类型,要么干脆就不声明继承关系,这是因为.NET中规定类只能是单继承。但是可以在不同的部分中声明不同的接口,编译时它们将合并在一起,从而使该类型同时实现多个接口。在某一分部定义中声明的任何类、结构或接口成员可供所有其他部分使用。最终类型是所有部分在编译时的组合。

综上所述,在使用分部类型时,有许多需要协调的地方,就像我们在开时的团队协作,都是需要彼此协调,不能发生冲突。

【责任编辑:夏书 TEL:(010)68476606】

回书目   上一节   下一节
体验Visual Studio 2008的魅力
Visual Studio 2005开发基础
专题:ASP.NET 2.0基础开发指南
微软的Ajax:Atlas(ASP.net AJAX)
ASP.NET开发教程
 
 验证码: (点击刷新验证码)   匿名发表
  • Visual C++ 完全自学宝典

  • 作者:强锋科技,朱洪波
  • Visual C++ 6.0是微软公司为程序人员提供的Visual Studio 6.0工具套件中的重要组成部分。本书由浅入深地介绍使用Visual C++ 6.0..
Copyright©2005-2008 51CTO.COM 版权所有