Вот как бы я это сделал:
Создайте publi c метод с именем Count
в BaseClass. Этот метод должен вызывать метод реализации базового счетчика, а затем метод абстрактного счетчика. отметьте, что абстрактный метод подсчета защищен.
Таким образом, каждый, кто наследует класс Base
, вынужден добавить свою собственную реализацию, в то время как любой, кто его использует, должен go через publi c Count
класс, который также выполняет базовую реализацию.
Вот основная c структура кода:
abstract class Base
{
public void Count()
{
CountBaseImplementation();
CountSubClassesImplementation();
}
private CountBaseImplementation()
{
// Base implementation here
}
protected abstract CountSubClassesImplementation();
}
class A : Base
{
protected override CountSubClassesImplementation()
{
// A specific implementation here
}
}
class B : Base
{
protected override CountSubClassesImplementation()
{
// B specific implementation here
}
}