Ich finde, dass ich mich viel wiederhole und das ist natürlich nicht gut. Also habe ich mich gefragt, ob ich etwas dagegen tun könnte. Dies ist eine gemeinsame Code in meinem WPF-Anwendung:Wrapping der Eigenschaft Setzer
private string _name;
public string Name
{
get { return _name; }
set
{
if (_name != value)
{
_name = value;
OnPropertyChanged("Name");
}
}
}
Also habe ich mich gefragt, ob ich irgendwie die Setter wickeln könnte, um es besser und besser lesbar zu machen. Eine Idee war so etwas wie dieses:
protected void PropertySetter<T>(T property, T value, string name)
{
if (EqualityComparer<T>.Default.Equals(property, value))
{
property = value;
OnPropertyChanged(name);
}
}
Verwendung wie folgt aus:
private string _name2;
public string Name2
{
get { return _name2; }
set
{
PropertySetter<string>(Name2, value, "Name2");
}
}
Aber ich bin nicht sicher, ob das wirklich klug ist oder wäre auch mit Werttypen arbeiten?
Ich denke, ich bin nicht der erste, der so etwas versucht, also wenn jemand einen guten, narrensicheren Weg zu so etwas kennt, bitte hereinklingeln. Ich denke, ich konnte die Eigenschaft nicht ändern, ohne Reflektion, aber irgendwelche Ideen würde auch helfen.
private String _myField;
public String MyProperty
{
get
{ return _myField; }
set
{ SetAndNotify(ref _myField, value,() => MyProperty); }
}
Edit::
Überprüfen Sie ReactiveUI für dieses Verhalten, wenn Sie es nicht verwenden möchten, dann können Sie es vielleicht kopieren. http://www.reactiveui.net/ z.B. 'set {this.RaiseAndSetIfChanged (x => x.PasswordConfirmation, Wert); } ' –
Fügen Sie' ref' zu Ihrem Eigenschaftsparameter hinzu und es wird auch für ValueTypes funktionieren. – SimpleVar