Реализация INotifyPropertyChanged

Базовая реализация интерфейса INotifyPropertyChanged, который позволяет оповещать об изменении свойств объекта (необходим при связывании (bindings) данных, например, в WPF формах):
  1. public class Model : INotifyPropertyChanged {
  2.  
  3.   // Реализация интерфейса INotifyPropertyChanged.
  4.   public event PropertyChangedEventHandler PropertyChanged;
  5.   protected void OnPropertyChanged(string propertyName) {
  6.     PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName);
  7.   }
  8.  
  9.   // Пример использования.
  10.   private string name;
  11.   public string Name {
  12.     get { return name; }
  13.     set {
  14.       name = value;
  15.       OnPropertyChanged(nameof(Name));
  16.     }
  17.   }
  18.  
  19. }
Чуть менее boilerplate решение с использованием атрибута CallerMemberName:
  1. public class Model : INotifyPropertyChanged {
  2.  
  3.   // Реализация интерфейса INotifyPropertyChanged.
  4.   public event PropertyChangedEventHandler PropertyChanged;
  5.   protected void OnPropertyChanged([CallerMemberName] string propertyName = null) {
  6.     PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName);
  7.   }
  8.  
  9.   // Пример использования.
  10.   private string name;
  11.   public string Name {
  12.     get { return name; }
  13.     set {
  14.       name = value;
  15.       OnPropertyChanged();
  16.     }
  17.   }
  18.  
  19. }
Решение для ленивых и современных: PropertyChanged weaver для Fody.

Реклама

Мы в соцсетях

tw tg yt gt