C# Value Observing
dotnet add package H00N.ObservableValue
public partial class MyClass
{
[ObservableValue]
private float _myField = 0;
}
// somewhere
MyClass myClass = new MyClass();
myClass.OnMyFieldChangedEvent += HandleMyFieldChanged;
myClass.MyField = 10;
myClass.MyField = 11;
myClass.MyField = 9;
void HandleMyFieldChanged(float oldValue, float newValue)
{
Console.WriteLine($"Value Changed! OldValue: {oldValue}, NewValue: {newValue}");
}
// output
Value Changed! OldValue: 0, NewValue: 10
Value Changed! OldValue: 10, NewValue: 11
Value Changed! OldValue: 11, NewValue: 9ObservableValue only raises change notifications when it detects an actual value change.
Internally it uses:
System.Collections.Generic.EqualityComparer<T>.Default.Equals(oldValue, newValue)