Реализация INotifyPropertyChanged
Базовая реализация интерфейса INotifyPropertyChanged, который позволяет оповещать об изменении свойств объекта (необходим при связывании (bindings) данных, например, в WPF формах):
- public class Model : INotifyPropertyChanged {
- // Реализация интерфейса INotifyPropertyChanged.
- public event PropertyChangedEventHandler PropertyChanged;
- protected void OnPropertyChanged(string propertyName) {
- PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName);
- }
- // Пример использования.
- private string name;
- public string Name {
- get { return name; }
- set {
- name = value;
- OnPropertyChanged(nameof(Name));
- }
- }
- }
Чуть менее boilerplate решение с использованием атрибута CallerMemberName:
- public class Model : INotifyPropertyChanged {
- // Реализация интерфейса INotifyPropertyChanged.
- public event PropertyChangedEventHandler PropertyChanged;
- protected void OnPropertyChanged([CallerMemberName] string propertyName = null) {
- PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName);
- }
- // Пример использования.
- private string name;
- public string Name {
- get { return name; }
- set {
- name = value;
- OnPropertyChanged();
- }
- }
- }
Решение для ленивых и современных: PropertyChanged weaver для Fody.