一个惊喜——使用分部类定义很久了,但刚刚发现:编译时将从所有分部类型定义中对“接口”进行合并,而不仅仅是类属性、成员和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中描述的那样:当使用大项目或自动生成的代码时,将类、结构或接口类型拆分到多个文件中很有用。