Нет никаких существенных преимуществ / недостатков ни у одного из подходов.
Есть несколько различий между подпиской на событие и переопределением метода базового класса. Например, если вы хотите, чтобы какой-то код выполнялся до или после всех других обработчиков, вам действительно следует переопределить метод OnSomeEvent
, поскольку в противном случае нет способа гарантировать это. Но вы указываете, что вас это не волнует.
В общем, переопределение метода - это то, что требует хорошего понимания поведения базового класса, чтобы гарантировать, что вы случайно не нарушите ничего. Подписка на событие является менее навязчивым расширением и является тем, что (предположительно) разработчик базового класса запланировал.
Иногда люди утверждают, что производительность лучше при переопределении, но я не покупаю этот аргумент. Производительность имеет значение только тогда, когда она имеет значение . Разница здесь, вероятно, настолько незначительна, что нужно больше заботиться о простоте, правильности и простоте обслуживания, а не о производительности.