所以我有一个事件声明如下:
public event EventHandler OnChangeDetected;
然后我将以下处理程序分配给该事件。
myObject.OnChangeDetected += OnTableChanged;
我的理解是,此类事件需要我的 OnTableChanged 方法具有以下可以正常编译的签名。
public void OnTableChanged(object sender, EventArgs e)
现在我想将 OnTableChanged 事件替换为以下签名。
public void OnTableChanged(SqlChangeNotifier sender, SqlNotificationEventArgs e)
但是,当我用派生类型替换参数时,它会抱怨没有与委托 EventHandler 匹配的“OnTableChanged”重载。由于 SqlChangeNotifier 派生自 Object,而 SqlNotificationEventArgs 派生自 EventArgs,谁能解释为什么我不能拥有这些派生参数类型,因为它们继承自正确的基类型?
POPMUISE
墨色风雨
Cats萌萌
相关分类