using System.Collections.Generic; public class DispatcherOnChange: Dispatcher { public DispatcherOnChange(S sender) : base(sender) { } public T value { set { if (EqualityComparer.Default.Equals(value, _value) == false) { _value = value; Dispatch(ref value); } } } T _value; } public class DispatcherOnSet: Dispatcher { public DispatcherOnSet(S sender) : base(sender) { } public T value { set { Dispatch(ref value); } } }