每当我重写基类的方法时,除了我的实现之外,似乎有三个选择:
1)调用base.Method(),然后提供我的实现。
2)先提供我的实现,然后调用base.Method()
3)只提供我的实现。
最近在使用一个库时,我发现由于未按照库的期望实现方法而引入了一些错误。 我不确定这是库方面的问题还是我的理解有误。
我会举一个例子。
public class ViewManager {
public virtual void Customize(){
PrepareBaseView();
}
}
public class PostViewManager {
public override void Customize(){
base.Customize();
PreparePostView();
}
}
public class PreViewManager {
public override void Customize(){
PreparePreView();
base.Customize();
}
}
public class CustomViewManager {
public override void Customize(){
PrepareCustomView();
}
}
我的问题是,子类如何知道(不查看基类实现的情况下)父类期望的顺序(或选项)是什么? 有没有一种方式可以让父类强制所有派生类中的一个选项?
PostViewManager
、PreViewManager
、CustomViewManager
是否继承自ViewManager
?如果是,您应该编辑代码。 - LaTeX