Я нахожу, что я много повторяю, и это, конечно, нехорошо. Поэтому я подумал, могу ли я что-нибудь с этим сделать. Это общий код в моем WPF приложения:Обнаруживание свойства setter
private string _name;
public string Name
{
get { return _name; }
set
{
if (_name != value)
{
_name = value;
OnPropertyChanged("Name");
}
}
}
Так мне было интересно, если я мог бы обернуть сеттер каким-то образом, чтобы сделать его лучше и более удобным для чтения. Одна из идей было что-то вроде этого:
protected void PropertySetter<T>(T property, T value, string name)
{
if (EqualityComparer<T>.Default.Equals(property, value))
{
property = value;
OnPropertyChanged(name);
}
}
Использование так:
private string _name2;
public string Name2
{
get { return _name2; }
set
{
PropertySetter<string>(Name2, value, "Name2");
}
}
Но я не уверен, что это действительно умный или будет работать, а также с типами Value?
Я предполагаю, что я не первый, кто попробует что-то подобное, так что если кто-то знает хороший надежный способ сделать что-то вроде этого, пожалуйста, перезвоните. Я полагаю, я не мог сделать свойство Changed typeafe без отражения, но любые идеи там также поможет.
Check ReactiveUI для этого поведения, если вы не хотите его использовать, вы можете его скопировать. http://www.reactiveui.net/. 'set {this.RaiseAndSetIfChanged (x => x.PasswordConfirmation, value); } ' –
Добавьте' ref' в свой параметр свойства, и он будет работать и для ValueTypes. – SimpleVar