特定のオブジェクトが変更イベントをサブスクライブできるようにする次のクラスがあります。問題は、オブジェクトが同じ種類のものをサブスクライブできるようにするこの機能を必要とするクラスBとCもあることです。確かに、この動作をコピーして貼り付けたくはありません。
共通のベースクラスから継承することを検討しましたが、A、B、Cを含むすべてのクラスはすでに共通のBaseClassから継承しています。また、BaseClassから継承する他のクラスE、F、Gはこの動作を必要としないため、この動作をBaseClassに追加したくありません。
より良い解決策はありますか?
public class A : BaseClass
{
/*other properties and code */
public event EventHandler OnChange;
private bool _hasChanged;
public bool HasChanged
{
get { return _hasChanged; }
set
{
_hasChanged = value;
//only need to notify when we've changed.
if (value)
{
if (OnChange != null)
OnChange(this, EventArgs.Empty);
}
}
}
}