【发布时间】:2010-01-13 11:59:28
【问题描述】:
关于班级设计的问题。目前我有以下结构:
抽象基础知识库类
默认存储库实现类(实现一些抽象方法,其中逻辑在所有特定类中是通用的,但其他类为空)
Specific Repository implementation Class(实现上述 Default 类中留空的部分)
我现在遇到的问题是,我在特定类中有一个特定的 Update() 方法,但是当这个方法中的所有代码执行时,也应该执行基类 Default 类中的一些代码。
我可以这样做
public override Update()
{
// do Specific class actions and updates
// ....
// follow with base.Update()
base.Update();
}
但这需要所有继承方法中的那些 base.XYZ() 调用。我可以用部分方法解决这个问题吗?
所以要求是在父类和继承类中都有代码(或者使用部分使这两个类成为一个类)并且应该执行来自两个地方的方法实现的代码。另外,如果我想把它转过来,先执行基类代码,然后执行继承的类代码呢?
谢谢
【问题讨论】:
-
Partials 用于扩展代码生成的类,除此之外我不会使用它们
-
我无法完全理解您的意思。所以
base.XYZ()和base.Update()必须被调用?但是XYZ()要在具体类中实现? -
XYZ() 表示基本的 CRUD 操作插入、更新、删除......所以这些必须在具体类中实现,但重要的是要了解我有两个具体类:一个为业务提供默认实现逻辑,还有另一个(你可以认为它是 3 级类)提供了一些特殊的自定义实现。
-
可能是一个问题有点难以理解。简单地说,我希望两个类中的实现合并,如果可能的话,应该即时执行,基类代码应该隐式执行(它应该来自类层次结构设计),而不是必须由基类调用。一些方法()
-
如果您真正需要的是一个“附加模型”,其中基类方法将与其他方法一起自动触发:查看 EventHandler 模型。我认为部分类和/或方法与您在此处尝试实现的目标没有任何关系。
标签: c# .net inheritance partial-classes