public void TestCloneMembers() { TestObject[] copies = new TestObject[3]; TestObject objB, objA = TestObject.Create(); using (ObjectCloner cloner = new MemberwiseClone()) { objB = cloner.Clone(objA); for (int i = 0; i < copies.Length; i++) copies[i] = cloner.Clone(objB); } AssertDifferences(objA, objB); //not using serialization yields new instance of singleton Assert.IsFalse(Object.ReferenceEquals(objA.singletonData, objB.singletonData)); //not using serializaiton skips all custom routines Assert.IsFalse(objA.customData.CustomData); Assert.IsFalse(objA.customData.Deserialized); Assert.IsFalse(objB.customData.CustomData); Assert.IsFalse(objB.customData.Deserialized); }