INotifyPropertyChangedImpl.cs 779 B

1234567891011121314151617181920212223
  1. using System.Collections.Generic;
  2. using System.ComponentModel;
  3. using System.Runtime.CompilerServices;
  4. namespace System.Windows.Forms
  5. {
  6. public class INotifyPropertyChangedImpl : INotifyPropertyChanged
  7. {
  8. public event PropertyChangedEventHandler PropertyChanged;
  9. internal void RaiseAndSetIfChanged<T>(ref T field, T value, [CallerMemberName] string propertyName = "")
  10. {
  11. if (!EqualityComparer<T>.Default.Equals(field, value))
  12. {
  13. field = value;
  14. RaisePropertyChanged(propertyName);
  15. }
  16. }
  17. internal void RaisePropertyChanged([CallerMemberName] string propertyName = "") =>
  18. PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
  19. }
  20. }