Страницы

Поиск по вопросам

среда, 5 декабря 2018 г.

Принудительный вызов base C#

Какая в C# есть возможность для принудительного вызова функции базового класса в функции наследника
Пример:
class A { public virtual void F(){...} }
class B : A { public override void F() { base.F();//<--- должна быть эта строка! Иначе , //выкинуть ошибку, к примеру. ... } }
Спасибо!


Ответ

Можно сделать так: порядок вызова определяем в родителе, а наследников обязуем переопределить их часть. Если эта часть необязательная, то можно ослабить условие, и сделать метод virtual вместо abstract
class A { public void F() { // базовый код
FInternal(); }
protected abstract void FInternal();
// более мягкий вариант //protected virtual void FInternal() //{ //} }
class B : A { protected override void FInternal() { ... } }

Комментариев нет:

Отправить комментарий