.NET部分类与继承

Mik*_*fer 7 .net partial-classes

好的,所以我们内部有一个实用工具,可以从我们的数据库表和视图中生成业务模型类,类似于(但不完全像)ORM.在维护它时,我发现模式中的数据可能不会发生很大的变化.但是,功能可能会.我们可能希望在未来添加其他功能.我们可能想要生成一些功能,我们可能想要扩展它.

我们正在构建的类将驻留在类库中,供其他库和应用程序使用.那里没什么大惊喜.但这里的难点是如何设计生成的类,以便在重新生成类时尽可能少地破坏代码.例如,如果代码已添加到属性(表示数据库表中的列),我们不希望丢失它.

因此,有两种方法可以想到:

经典继承,整个过程在一个"单片"类中完成,消费者可以自由地覆盖基础实现.然而,这有时会变得棘手,并经常引入铸造头痛.此外,如果派生类不小心并忘记调用基类功能,事情很快就会出错.

部分课程.在此方案中,我们将业务对象分成不同的部分:属性(映射到列)和行为.行为甚至可以进一步细分为生成的行为和自定义行为.正如您所看到的,这种方法的问题在于其固有的复杂性.此外,还有命名问题.

以下是我的问题:当你处理这样的场景时(如果有的话),或者如果你遇到这样的场景,你会考虑哪些解决方案,为什么?

wom*_*omp 11

部分类包含在.Net中的全部原因是为了更容易地利用代码生成工具.

如果要生成代码,请使用分部类.这真的很简单.为什么你要承担代码可能需要重新生成的风险,你需要做大量的工作来通过自定义重新更新它?

我发现部分内容并不复杂 - 它只是一个分为多个文件的类.在一个文件中生成代码,在另一个文件中生成自定义代码.