継承先から親クラスのイベントの発行


継承先から親クラスのイベントを発行しようとした際に

`****’ can only appear on the left hand side of += or -= when used outside of the type ` ****’

こんなエラーが出た。

どうも
event EventHandler MyEvent;
と定義をした際には実際には
[unitycsharp]
private EventHandler _myEvent;

public EventHandler MyEvent {
add(EventHandler handler) {
this._myEvent += handler;
}
remove(EventHandler handler) {
this._myEvent -= handler;
}
}
[/unitycsharp]
こんな展開がされているらしい。
ここで、_myEventはprivateなので継承先からは処理が呼べないらしい。
なので、継承元に
[unitycsharp]
protected CallMyEvent() {
this.MyEvent(this, EventArgs.Empty);
}
[/unitycsharp]
などを準備して、継承先から読んであげる必要があるようです。

参考)
devlog [naru design] | Unity3D:スーパークラスのeventをサブクラスから呼び出す
stackoverflow | Why can’t I invoke PropertyChanged event from an Extension Method?

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です