Если у вас есть виртуальный метод в базовом классе (ClassA), который переопределяется в унаследованном классе (ClassB), и вы хотите, чтобы класс, который наследует от ClassB, переопределял этот метод, тогда вы должны пометить этот метод как «запечатанный» в ClassB.
public class ClassA
{
public virtual void Somemethod() {}
}
public class ClassB : ClassA
{
public sealed override void Somemethod() {}
}
public class ClassC : ClassB
{
// cannot override Somemethod here.
}