-->

.NET分部类与继承[关闭](.NET Partial Classes vs. Inheritanc

2019-09-17 02:36发布

好了,所以我们这里有内部一个实用程序,从我们的数据库表和视图,类似生成的业务模型类(但不完全完全一样)的ORM。 在维护它,它发生,我认为在架构中的数据不太可能会改变一大堆。 的功能,但是,可能。 我们可能需要添加额外的功能在道路上。 我们可能要产生一些的这些功能,我们可能要扩展它。

我们正在建设中的类将驻留在类库供其他库和应用程序消耗。 没有大的惊喜出现。 但这里规定难倒的是如何在我们再生一个类,我们破坏尽可能少的代码尽可能这样的方式设计生成的类。 如果,例如,代码已被添加到一个属性(表示在数据库表中的列),我们不想失去的。

因此,有飞跃想到两种方法:

经典的继承 ,在整个事情是一个完成的,“铁板一块”级和消费者可以自由地覆盖基本实现。 这从时间得到一定的技巧,时间,不过,经常介绍铸造头痛。 此外,如果派生类是不小心忘记调用基类的功能,事情可以很快出差错。

局部类 。 在该方案中,我们的业务对象分离成不同的部分:属性(它映射到的列),以及行为。 行为甚至可以进一步细分为生成的行为和自定义行为。 这种方法的问题,因为你所看到的,是其固有的复杂性。 此外,还有的命名问题。

下面是我对你的乡亲问题:当你有这样的情况处理(如果你有),或者如果你带有这样的场景中,你会考虑什么样的解决方案,为什么?

Answer 1:

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

如果您正在生成代码,使用部分类。 它就是这么简单。 为什么你会铤而走险,代码可能要重新生成的道路,你必须做大量的工作以自定义要重新更新呢?

我不觉得有很多复杂的谐音要么 - 它只是一个类拆分为多个文件。 在一个文件中生成的代码,在其他自定义代码。



Answer 2:

我会去部分类路径。 仅仅因为它适合用于划分1个对象在许多地方更自然。 即使LINQ2SQL使用谐音。 与模式和适当的约定复杂战斗。 而且它更容易在局部类执行“部分更新”(如果生成的代码结构良好)。

如果你没有做任何代码生成 - 走类继承的方式(实际上,你将被迫,原因谐音不会跨越不同的组件工作)。



Answer 3:

这正是部分类存在于解决问题。 我想你可能会打破,虽然他们下来有点过头的实际用途。 不知道你的应用程序的更精细的细节我的直觉反应是使用一类的所有生成的代码部分的类文件,第二个文件为手工创建的所有代码。 来为生成的部分类的命名惯例,并坚持下去。



Answer 4:

如果你有一个类型,它是被序列化(以XML),并希望增加一些功能,你必须使用部分类,而不是继承。 谢谢///中号



Answer 5:

你说:

类似(但不是完全一模一样)的ORM

我想提请周围当前解决方案的维护成本(我猜是显著)一些forecats数字,然后选择一个ORM,写的概念解决方案论证,并制定比较数字保持这一点。 我不知道什么样的维修方式这个定制包的成本,斜升和开发商购买,但我一个也不会靠近“定制”的产品去任何地方,像这样的。 知识是不可转让的,错误的风险是很高的(总是与代码生成的情况下),你被绑定到底层数据库的intracacies。



文章来源: .NET Partial Classes vs. Inheritance [closed]