継承先から親クラスのイベントの発行
継承先から親クラスのイベントを発行しようとした際に
`****’ can only appear on the left hand side of += or -= when used outside of the type ` ****’
こんなエラーが出た。
どうも
event EventHandler MyEvent;
と定義をした際には実際には
private EventHandler _myEvent;
public EventHandler MyEvent {
add(EventHandler handler) {
this._myEvent += handler;
}
remove(EventHandler handler) {
this._myEvent -= handler;
}
}
こんな展開がされているらしい。
ここで、_myEventはprivateなので継承先からは処理が呼べないらしい。
なので、継承元に
protected CallMyEvent() {
this.MyEvent(this, EventArgs.Empty);
}
などを準備して、継承先から読んであげる必要があるようです。
参考)
devlog [naru design] | Unity3D:スーパークラスのeventをサブクラスから呼び出す
stackoverflow | Why can’t I invoke PropertyChanged event from an Extension Method?
コメントを残す