Exemplo n.º 1
0
        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);
        }