public void ObjectToPropertyDependency()
        {
            var obj = new ObjectToPropertyDependencyTestObject(1, 2);

            Assert.AreEqual(1, obj.Prop1);
            Assert.AreEqual(1, obj.obj.Prop1);
            Assert.AreEqual(2, obj.obj.Prop2);

            var n = 0;

            obj.Register("Prop1", () => n++);
            obj.obj.Prop1 = 23;
            obj.obj.Prop2 = 42;

            Assert.AreEqual(2, n);
            Assert.AreEqual(23, obj.Prop1);
            Assert.AreEqual(23, obj.obj.Prop1);
            Assert.AreEqual(42, obj.obj.Prop2);
        }
        public void ObjectToPropertyDependency()
        {
            var obj = new ObjectToPropertyDependencyTestObject(1, 2);
            Assert.AreEqual(1, obj.Prop1);
            Assert.AreEqual(1, obj.obj.Prop1);
            Assert.AreEqual(2, obj.obj.Prop2);

            var n = 0;
            obj.Register("Prop1", () => n++);
            obj.obj.Prop1 = 23;
            obj.obj.Prop2 = 42;

            Assert.AreEqual(2, n);
            Assert.AreEqual(23, obj.Prop1);
            Assert.AreEqual(23, obj.obj.Prop1);
            Assert.AreEqual(42, obj.obj.Prop2);
        }