Итак, у меня есть событие, объявленное следующим образом:
public event EventHandler OnChangeDetected;
Затем у меня есть следующий обработчик, который назначается этому событию.
myObject.OnChangeDetected += OnTableChanged;
Насколько я понимаю, этот типсобытие потребовало бы, чтобы мой метод OnTableChanged имел следующую подпись, которая прекрасно компилируется.
public void OnTableChanged(object sender, EventArgs e)
Теперь я хочу заменить событие OnTableChanged следующей подписью.
public void OnTableChanged(SqlChangeNotifier sender, SqlNotificationEventArgs e)
Однако,Когда я заменяю параметры производными типами, он жалуется, что нет перегрузки для «OnTableChanged», который соответствует делегату EventHandler.Поскольку SqlChangeNotifier является производным от Object, а SqlNotificationEventArgs является производным от EventArgs, может кто-нибудь объяснить, почему у меня не может быть этих производных типов параметров, поскольку они наследуются от правильных базовых типов?