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


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

`****’ 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?

コメントを残す

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