Какая в 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()
{
...
}
}
Комментариев нет:
Отправить комментарий