こんな感じのプロパティがあるとします。
public int SomeIntProperty
{
get;
private set;
}
このプロパティを後からReactivePropertyとして参照したくなった時。
プロパティの参照先が少なければ別にそのまま型をReactivePropertyに変えてしまってもまあいいですが、参照先が多かった場合は変更箇所も多くなり若干面倒です。
また従来の参照箇所で、別にただのプロパティでよいはずの処理もReactivePropertyになるので、認知負荷が大きくなるかもしれません。
以下のようにリファクタリングできます。
// ReactivePropertyとして参照したい箇所ではこれを参照
public IReadOnlyReactiveProperty<int> SomeIntReactiveProperty => someIntPropertyEntity;
private readonly ReactiveProperty<int> someIntPropertyEntity = new ReactiveProperty<int>();
public int SomeIntProperty
{
get => someIntPropertyEntity.Value;
private set => someIntPropertyEntity.Value = value;
}
SomeIntProperty
のガワはそのままですが、中身の実態はsomeIntPropertyEntity
に置き換えられています。
そしてSomeIntReactiveProperty
の実態もsomeIntPropertyEntity
で共通です。
ソースコードの通りですが、つまりSomeIntProperty
への変更はsomeIntPropertyEntity
の値の変更になり、ReactivePropertyであるsomeIntPropertyEntity
の値が変更された結果SomeIntReactiveProperty
として発火することになります。