Ответ 1
Итак, у вас на самом деле есть два подобных событиям. Ваше переопределение будет переопределять часть добавления/удаления, но у вас будет два поля: один в TableMain
и один в TableSub
. Только один из TableSub
всегда будет не равным нулю, если значение явно не указано в TableMain
... поэтому, если TableMain
когда-либо пытается поднять это событие, он не будет вызывать тот же набор обработчиков как в TableSub
. В принципе, это будет вести себя странно.
Правильный подход заключается в предоставлении защищенного метода в TableMain
, чтобы позволить событию быть поднятым подклассами:
protected void OnUpdateFilter()
{
Action handler = UpdateFilter;
if (handler != null)
{
handler();
}
}
Затем сделайте событие не виртуальным и удалите переопределение в TableSub
.
Обратите внимание, что ваша подпись события не соответствует нормальному соглашению для событий - любая причина не использовать EventHandler
?