protected virtual void OnPropertyChanged(PropertyChangedEventInfo info) { Invariant.ArgumentNotNull((object)info, "info"); this.propertyChangedSubject.OnNext(info); PropertyChangedEventHandler propertyChanged = this.PropertyChanged; if (propertyChanged == null) { return; } propertyChanged((object)this, new PropertyChangedEventArgs(info.PropertyName)); }
protected bool SetValue <T>(ref T backingField, T value, [CallerMemberName] string propertyName = null) { Invariant.ArgumentNotNull((object)propertyName, "propertyName"); this.VerifyAccess(); if (EqualityComparer <T> .Default.Equals(backingField, value)) { return(false); } PropertyChangedEventInfo <T> changedEventInfo = new PropertyChangedEventInfo <T>((object)this, propertyName, backingField, value); backingField = value; this.OnPropertyChanged((PropertyChangedEventInfo)changedEventInfo); return(true); }