ユーザーがPropertHasChangedイベントを簡単に使用できるようにし、追加の処理を実行できるようにする一連のメソッドがあります。メソッドは次のとおりです。
public virtual void SetPropertyValue<T>(ref T currentValue, T newValue, Action<T> extraFunction = null, Action voidAfterSetAction = null) where T : class
{
if (currentValue == newValue) return;
currentValue = newValue;
PropertyHasChanged();
if (extraFunction != null) extraFunction(newValue);
if (voidAfterSetAction != null) voidAfterSetAction();
}
extraFunction アクションで古い値が必要になる場合があることが明らかになりました。これは私がそれを行うつもりだった方法です:
public virtual void SetPropertyValue<T>(ref T currentValue, T newValue, Action<T, T> extraFunction = null, Action voidAfterSetAction = null) where T : class
{
var oldVal = currentValue;
if (currentValue == newValue) return;
currentValue = newValue;
PropertyHasChanged();
if (extraFunction != null) extraFunction(oldVal, newValue);
if (voidAfterSetAction != null) voidAfterSetAction();
}
お気づきかもしれませんが、extraFunction アクションは 2 つのパラメーターを受け取るようになりました。VS にはメソッドの作成に問題はありませんでしたが (赤い qwigglies はありません)、ビルドすると、最初のメソッドと 2 番目のメソッドの間の使用法があいまいであるという多くのエラーがスローされます。その場合、探しているものをどのように達成できますか?
編集
メソッドの通常の使用法は次のとおりです。
SetPropertyValue(ref _streetAddress1, value, null, () => SalesData.StreetAddress1 = value);