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