public void CloneStructWithSelfReferencingClass() { var selfRefClass = new CloneTestClass { FirstName = "John", LastName = "Doe" }; selfRefClass.InnerClass = selfRefClass; var source = new StructWithReferenceToSelfReferencingClass { Class = selfRefClass }; var clone = Cloneable <StructWithReferenceToSelfReferencingClass> .Clone(source); var shallowClone = Cloneable <StructWithReferenceToSelfReferencingClass> .ShallowClone(source); Assert.IsFalse(object.ReferenceEquals(source.Class, clone.Class)); Assert.IsTrue(object.ReferenceEquals(source.Class, shallowClone.Class)); Assert.IsTrue(object.ReferenceEquals(clone.Class, clone.Class.InnerClass)); }
public void CloneStructWithSelfReferencingClass() { var selfRefClass = new CloneTestClass { FirstName = "John", LastName = "Doe" }; selfRefClass.InnerClass = selfRefClass; var source = new StructWithReferenceToSelfReferencingClass {Class = selfRefClass}; var clone = Cloneable<StructWithReferenceToSelfReferencingClass>.Clone(source); var shallowClone = Cloneable<StructWithReferenceToSelfReferencingClass>.ShallowClone(source); Assert.IsFalse(object.ReferenceEquals(source.Class, clone.Class)); Assert.IsTrue(object.ReferenceEquals(source.Class, shallowClone.Class)); Assert.IsTrue(object.ReferenceEquals(clone.Class, clone.Class.InnerClass)); }