【发布时间】:2010-06-30 20:08:12
【问题描述】:
每当我重写基类的方法时,除了我对该方法的实现之外,我似乎有 3 个选择。
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?如果是这样,您应该编辑代码。
标签: c# inheritance overriding