public void TwoDerivedClasses() { var value = new InterfaceClass3(10.0); var w = new Writer(); var cs = new ClassSerializer(typeof(InterfaceClass3)); Assert.True(cs.Write(w, value, null)); Assert.AreEqual("!Test.InterfaceClass3{C1:!Test.InterfaceClass1{Value1:10},C2:!Test.InterfaceClass2{Value2:20}}", w.ToString()); var r = new Reader(w.ToString()); var result = cs.Read(r, null, null) as InterfaceClass3; Assert.IsNotNull(result); Assert.IsFalse(r.AnyLeft, "Any characters left."); Assert.IsNotNull(result.C1); Assert.IsInstanceOf <InterfaceClass1>(result.C1); Assert.IsNotNull(result.C2); Assert.IsInstanceOf <InterfaceClass2>(result.C2); Assert.IsTrue(value.IsSame(result), "Read back value is not the same."); }
public bool?IsSame(InterfaceClass3 result) { return((C1.GetValue() == result.C1.GetValue()) && (C2.GetValue() == result.C2.GetValue())); }