2009年07月7日C# 分部类定义很好很强大
一个惊喜——使用分部类定义很久了,但刚刚发现:编译时将从所有分部类型定义中对“接口”进行合并,而不仅仅是类属性、成员和XML注释!
好吧,这的确不是什么新发现,但是,当我对修改类型化数据集一筹莫展时,而恍然发现可以在分部类中实现一个接口!请理解我的心情!
情况是这样的:为了支持多种数据源,我先定义一个接口IRecordRow,然后通过可视化方式添加一个类型化数据集,数据集中包含 Records 表,当然,会自动生成 RecordsDataTable 和 RecordsRow 类,RecordsRow 在 *DataSet.Designer.cs 文件中声明如下:
public partial class RecordsRow : global::System.Data.DataRow
那么,我们怎样让 RecordsRow 实现接口 IRecordRow 呢?在 *DataSet.Designer.cs 中修改是肯定不行的。使用分部类就可以这样做:新建一个文件如*DataSet.User.cs,编写代码:
partial class *DataSet { partial class RecordsRow : IRecordRow {...} }
这样就可以了,编译时,系统会把这两个声明合并为:
partial class *DataSet { partial class RecordsRow : global::System.Data.DataRow, IRecordRow {...} }
哇,如此完美!正如MSDN中描述的那样:当使用大项目或自动生成的代码时,将类、结构或接口类型拆分到多个文件中很有用。