private void UpdateChild() { childChanged?.Dispose(); if (SubPath.Length == 0) { return; } if (IsValueChangeNotifier) { var observablePropertyChain = new ObservablePropertyChain(ValueAsNotifier, SubPath); Child = observablePropertyChain; childChanged = observablePropertyChain.Subscribe(OnNewChildValue); } else { var valueTypePropertyChain = new ValueTypePropertyChain(Property.Value, SubPath); Child = valueTypePropertyChain; } }
public void ValueTypeChain_WithTwoLevels_ValueIsAccessed() { var root = new MyStruct { Child = new ChildStruct { Text = "Some text" } }; var sut = new ValueTypePropertyChain(root, "Child.Text"); Assert.AreEqual("Some text", sut.Value); }
public void ValueTypeChain_WithOneLevel_ValueIsAccessed() { var root = new MyStruct { Text = "Hello" }; var sut = new ValueTypePropertyChain(root, "Text"); Assert.AreEqual("Hello", sut.Value); }