У меня есть набор методов, которые позволяют пользователям легко использовать событие 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 теперь принимает два параметра.У VS не было проблемы со мной при создании метода (без красных qwigglies), но при его создании выдается МНОГИЕ ошибки, которые говорят, что использование между первым методом и вторым методом неоднозначно.Если это так, то как мне добиться того, что я ищу?
РЕДАКТИРОВАТЬ
Вот обычное использование метода:
SetPropertyValue(ref _streetAddress1, value, null, () => SalesData.StreetAddress1 = value);