//#endregion Set classes //#region Set structs /// <summary> /// Establece la propiedad utilizando el operador <c>!=</c> para comprobar si /// ha cambiado. /// Solo se puede utilizar en <c>bool</c>. /// </summary> public static void SetSt(this INotifyPropertyChangedEx_Helper @this, string name, bool oldValue, bool value, Action <bool> setter) { if (oldValue != value) { setter(value); @this.NotifyPropertyChanged(name, oldValue, value); } }
/// <summary> /// Establece la propiedad utilizando el método <c>Equals</c> para comprobar si /// ha cambiado. /// No se puede utilizar en estructuras. /// </summary> public static void SetEqCl <T>(this INotifyPropertyChangedEx_Helper @this, string name, T oldValue, T value, Action <T> setter) where T : class { if (!object.Equals(oldValue, value)) { setter(value); @this.NotifyPropertyChanged(new PropertyChangedExEventArgs(name, oldValue, value)); } }
public static void EpsilonSet <T>(this INotifyPropertyChangedEx_Helper @this, ref T backingStore, T value, double epsilon = MathUtils.EPSILON, [CallerMemberName] string name = "") { if (!EpsilonEqualityComparer <T> .Default.EpsilonEquals(backingStore, value, epsilon)) { T oldValue = backingStore; backingStore = value; @this.NotifyPropertyChanged(new PropertyChangedExEventArgs(name, oldValue, value)); } }
public static void Set <T>(this INotifyPropertyChangedEx_Helper @this, ref T backingStore, T value, [CallerMemberName] string name = "") { if (!EqualityComparer <T> .Default.Equals(backingStore, value)) { T oldValue = backingStore; backingStore = value; @this.NotifyPropertyChanged(new PropertyChangedExEventArgs(name, oldValue, value)); } }
//#endregion Set structs /// <summary> /// </summary> public static void Set <T>(this INotifyPropertyChangedEx_Helper @this, string name, T oldValue, T value, Action <T> setter) { if (typeof(T).IsValueType) { if (!object.Equals(oldValue, value)) { setter(value); @this.NotifyPropertyChanged(name, oldValue, value); } } else { if (!object.ReferenceEquals(oldValue, value)) { setter(value); @this.NotifyPropertyChanged(name, oldValue, value); } } }
public static void NotifyPropertyChanged(this INotifyPropertyChangedEx_Helper sender, string name, object oldValue, object value) { sender.NotifyPropertyChanged(new PropertyChangedExEventArgs(name, oldValue, value)); }