Я вижу два типа реализации INotifyPropertyChanged
-
Первый:
public abstract class ViewModelBase : INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null) { PropertyChangedEventHandler handler = PropertyChanged; if (handler != null) { handler(this, new PropertyChangedEventArgs(propertyName)); } } }
-
Второй:
public abstract class ViewModelBase : INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; [NotifyPropertyChangedInvocator] protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null) { PropertyChangedEventHandler handler = PropertyChanged; if (handler != null) { handler(this, new PropertyChangedEventArgs(propertyName)); } } }
Во втором вы видите дополнительный атрибут [NotifyPropertyChangedInvocator]
для метода OnPropertyChanged
В моем случае оба ведут себя одинаково, но что, почему и когда использовать этот [NotifyPropertyChangedInvocator]
, каковы преимущества этого? Я искал в Интернете, но не нашел хорошего ответа.