При реализации INotifyPropertyChanged
, должен ли PropertyChanged
вызываться только тогда, когда n != value
или он должен быть вызван, потому что был вызван набор?Должен ли я поднимать INotifyPropertyChanged, когда значение изменяется или когда установлено?
Я ищу здесь рекомендацию отраслевого стандарта (если такая вещь существует), для которой реализация лучше и почему.
Пример 1- иллюстрирует "немой" событие стратегии привлечения
class Person : INotifyPropertyChanged
{
private string name;
public event PropertyChangedEventHandler PropertyChanged;
public string Name
{
get
{
return name;
}
set
{
name = value;
PropertyChanged(this, new PropertyChangedEventArgs(nameof(Name)));
}
}
}
Прецеденты с примером 1
Person p = new Person();
p.Name = "John"; // ProperyChanged fired
p.Name = "John"; // ProperyChanged fired
Пример 2- иллюстрирует " умная "стратегия повышения уровня жизни
class Person : INotifyPropertyChanged
{
private string name;
public event PropertyChangedEventHandler PropertyChanged;
public string Name
{
get
{
return name;
}
set
{
if(name != value)
{
name = value;
PropertyChanged(this, new PropertyChangedEventArgs(nameof(Name)));
}
}
}
}
Прецеденты с примером 2
Person p = new Person();
p.Name = "John"; // ProperyChanged fired
p.Name = "John"; // ProperyChanged ignored as name == value
Уведомление if(name != value)
в примере 2, который только позволит изменить значение, и ProperyChanged
событие, когда входящее значение не совпадает существующее значение.
Это отличная вещь в кодировании: вы можете заставить ее делать все, что вы хотите. –
Я думаю, что это может быть один из ответов «зависит от». –
Мне просто интересно, существует ли «рекомендуемый» подход между ними и почему? – series0ne