КЧ
public class HidingProperty<T>
{
public delegate T1 Getter<T1>(ref T1 currentValue);
public delegate void Setter<T2>(ref T2 currentValue, T2 newValue);
private T _storedValue;
private Getter<T> _getter;
private Setter<T> _setter;
public HidingProperty(Getter<T> getter, Setter<T> setter)
: this(default(T), getter, setter) { }
public HidingProperty(T initialValue, Getter<T> getter, Setter<T> setter)
{
_storedValue = initialValue;
_getter = getter;
_setter = setter;
}
public void Set(T newValue)
{
_setter(ref _storedValue, newValue);
}
public T Get()
{
return _getter(ref _storedValue);
}
}



