示例#1
0
        public void Should_reflect_object_tree_onlcuding_circular_references()
        {
            var sourceB1 = new SubClassB {
                Id = 1
            };
            var sourceB2 = new SubClassB {
                Id = 2
            };
            var sourceA = new SubClassA {
                Id = 3
            };

            sourceB1.BaseClassReference = sourceB1;
            sourceB2.BaseClassReference = sourceB1;
            sourceA.SubClassBReference  = sourceB2;

            var dynamicObject = new DynamicObject(sourceA);

            dynamicObject["Id"].ShouldBe(sourceA.Id);

            var referenceFromAToB2 = dynamicObject["SubClassBReference"] as DynamicObject;

            referenceFromAToB2.ShouldBeOfType <DynamicObject>();
            referenceFromAToB2["Id"].ShouldBe(sourceB2.Id);

            var referenceFromB2ToB1 = referenceFromAToB2["BaseClassReference"] as DynamicObject;

            referenceFromB2ToB1.ShouldBeOfType <DynamicObject>();
            referenceFromB2ToB1["Id"].ShouldBe(sourceB1.Id);

            referenceFromB2ToB1["BaseClassReference"].ShouldBeSameAs(referenceFromB2ToB1);
        }
示例#2
0
 public MainClass()
 {
     A = new SubClassA(this);
     B = new SubClassB(this);
 }