Uważam, że powtarzam sobie dużo i to oczywiście nie jest dobre. Zastanawiałem się, czy mógłbym coś z tym zrobić. Jest to wspólny kod w mojej aplikacji WPF:Owijanie obiektu ustawiającego
private string _name;
public string Name
{
get { return _name; }
set
{
if (_name != value)
{
_name = value;
OnPropertyChanged("Name");
}
}
}
Więc zastanawiałem się, czy mogę owinąć setter jakoś zrobić to lepiej i bardziej czytelny. Jednym z pomysłów było coś takiego:
protected void PropertySetter<T>(T property, T value, string name)
{
if (EqualityComparer<T>.Default.Equals(property, value))
{
property = value;
OnPropertyChanged(name);
}
}
Wykorzystanie tak:
private string _name2;
public string Name2
{
get { return _name2; }
set
{
PropertySetter<string>(Name2, value, "Name2");
}
}
Ale nie jestem pewien, że to jest naprawdę inteligentny i będzie działać również z typów wartości?
Domyślam się, że nie jestem pierwszym, który wypróbował coś takiego, więc jeśli ktoś zna dobry, niezawodny sposób na coś takiego, proszę zadzwoń. Sądzę, że nie mógłbym wprowadzić właściwości "Zmieniony rodzaj" bez refleksji, ale wszelkie pomysły również pomogłoby.
Sprawdź ReactiveUI dla tego zachowania, jeśli nie chcesz go używać, możesz go skopiować. http://www.reactiveui.net/ np. 'set {this.RaiseAndSetIfChanged (x => x.PasswordConfirmation, value); } ' –
Dodaj' ref' do parametru właściwości i będzie działać również dla ValueTypes. – SimpleVar