В сборке .NET System.Windows
классы часто определяют события и вызывают их в течение всего времени жизни объекта.Например, класс UIElement
определяет событие KeyUp
, которое является «псевдонимом события Keyboard.KeyUp»:
public event KeyEventHandler KeyUp;
Однако он также объявляет метод protected OnKeyUp
, который вызываетсяпосле запуска события:
protected virtual void OnKeyUp(KeyEventArgs e);
Насколько я вижу, для каждого события есть защищенный метод.Поскольку эти методы защищены, их можно вызывать только из класса, который расширяет класс UIElement
.Давайте представим, что у меня есть такой расширяющий класс.
Мой вопрос: учитывая мой класс, который расширяет класс UIElement
, в чем разница между переопределением защищенного метода и обработкой соответствующего события?Есть ли разница вообще?Есть ли польза от использования защищенных методов по сравнению с обработкой событий?