Всякий раз, когда я переопределяю метод базового класса, кроме моей реализации этого метода, мне кажется, что у меня есть 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();
}
}
Мой вопрос здесь заключается в том, как может дочерний класс узнать (не глядя на реализацию базового класса), какой порядок (или параметр) ожидается родительским классом?
Есть ли способ, которым родительский класс мог бы принудительно применить один из трех альтернатив всем производным классам?