private object GetValue() { if (ObservableValue.IsNullOrUnset(baseValue) || propertyGetMethod == null) { return(ObservableValue.UnsetValue); } return(propertyGetMethod.Invoke(baseValue, index.ToArray())); }
public bool TrySetValue(object value) { if (ObservableValue.IsNullOrUnset(baseValue) || propertySetMethod == null) { return(false); } propertySetMethod.Invoke(baseValue, index.Concat(new object[] { value }).ToArray()); observableValue.Value = GetValue(); return(true); }
private void SetDelegateObserverBaseValue() { object baseValue = baseObserver.Value; if (ObservableValue.IsNullOrUnset(baseValue) || baseObserverValueType == baseValue.GetType()) { if (delegateObserver != null) { delegateObserver.SetBaseValue(baseValue); } return; } baseObserverValueType = baseValue.GetType(); if (delegateObserver is IDisposable) { ((IDisposable)delegateObserver).Dispose(); } delegateObserver = propertyPathElement.CreatePropertyObserver(baseObserverValueType); if (delegateObserver != null) { ValueType = delegateObserver.ValueType; delegateObserver.SetBaseValue(baseValue); delegateObserver.ValueChanged += (sender, e) => observableValue.Value = delegateObserver.Value; observableValue.Value = delegateObserver.Value; } else { ValueType = null; observableValue.Value = ObservableValue.UnsetValue; } }