Обязанности и достижения подписавшись на собственные события


Одна общая вещь, которую я вижу, разработчики делают в WinForms-это формы / элементы управления, подписывающиеся на свои собственные события, поэтому вы получаете

this.Load += new System.EventHandler(this.WelcomeQuickViewWF_Load);
this.Activated += new System.EventHandler(this.WelcomeQuickViewWF_Activated);

Вместо

protected override void OnActivated(EventArgs e)
{
}

Теперь я знаю, что второй способ более объектно-ориентирован, первый способ управляется событиями, и я склоняюсь к рефакторингу в сторону переопределения - есть ли причина не делать этого? Чего я не хочу делать, так это вносить изменения, которые на самом деле не нужны и являются чисто эстетическим выбором.

2 3

2 ответа:

Подписавшись на свое собственное событие, вы отказываетесь от контроля над тем, когда Ваш код вызывается, когда есть другие подписчики на событие. Переопределяя метод вызова событий, вы получаете полный контроль над тем, когда ваш код должен быть вызван. Вы можете вызвать его до уведомления подписчиков или после. Также нет никаких шансов, что ваш код будет отменен на отменяемом событии.

Если метод переопределяем, сделайте это. В противном случае регистрируйтесь, так как у вас нет другого выбора.

MSDN говорит , что переопределение методов On* является предпочтительным методом для обработки события в производном классе:

МетодOnActivated также позволяет производным классам обрабатывать событие без присоединения делегата. Переопределение этого метода является предпочтительным методом обработки события в производном классе.

Поэтому я бы сказал, что подход обработчика событий неидиоматичен.