Assert.IsNull(foobar.Baz);
}
}
+
+ [Test] // bug #8468
+ public void TestUseSubclassDefaultNamespace ()
+ {
+ XmlSerializer xs = new XmlSerializer (typeof (Bug8468Subclass));
+ string msg = "<Test xmlns=\"http://test-namespace\"><Base>BaseValue</Base><Mid>MidValue</Mid></Test>";
+ var res1 = (Bug8468Subclass)xs.Deserialize (new StringReader (msg));
+ Assert.IsNotNull (res1);
+ Assert.AreEqual ("BaseValue", res1.Base);
+ Assert.AreEqual ("MidValue", res1.Mid);
+
+ xs = new XmlSerializer (typeof (Bug8468SubclassNoNamespace), "http://test-namespace");
+ var res2 = (Bug8468SubclassNoNamespace)xs.Deserialize (new StringReader (msg));
+ Assert.IsNotNull (res2);
+ Assert.AreEqual ("BaseValue", res2.Base);
+ Assert.AreEqual ("MidValue", res2.Mid);
+
+ xs = new XmlSerializer (typeof (Bug8468SubclassV2));
+ var res3 = (Bug8468SubclassV2)xs.Deserialize (new StringReader (msg));
+ Assert.IsNotNull (res3);
+ Assert.IsNull (res3.Base);
+ Assert.AreEqual ("MidValue", res3.Mid);
+
+ xs = new XmlSerializer (typeof (Bug8468SubclassNoNamespaceV2), "http://test-namespace");
+ var res4 = (Bug8468SubclassNoNamespaceV2)xs.Deserialize (new StringReader (msg));
+ Assert.IsNotNull (res4);
+ Assert.IsNull (res4.Base);
+ Assert.AreEqual ("MidValue", res4.Mid);
+
+ msg = "<Test xmlns=\"http://test-namespace\"><Base xmlns=\"\">BaseValue</Base><Mid>MidValue</Mid></Test>";
+
+ xs = new XmlSerializer (typeof (Bug8468SubclassV2));
+ var res5 = (Bug8468SubclassV2)xs.Deserialize (new StringReader (msg));
+ Assert.IsNotNull (res5);
+ Assert.AreEqual ("BaseValue", res5.Base);
+ Assert.AreEqual ("MidValue", res5.Mid);
+
+ xs = new XmlSerializer (typeof (Bug8468SubclassNoNamespaceV2), "http://test-namespace");
+ var res6 = (Bug8468SubclassNoNamespaceV2)xs.Deserialize (new StringReader (msg));
+ Assert.IsNotNull (res6);
+ Assert.AreEqual ("BaseValue", res6.Base);
+ Assert.AreEqual ("MidValue", res6.Mid);
+ }
}
}
[XmlElementAttribute (DataType = "date")]
public DateTime SomeDate;
}
+
+ public class Bug8468BaseClass
+ {
+ public string Base;
+ }
+
+ public class Bug8468MidClass: Bug8468BaseClass
+ {
+ public string Mid;
+ }
+
+ [XmlRoot("Test", Namespace="http://test-namespace")]
+ public class Bug8468Subclass: Bug8468MidClass
+ {
+ }
+
+ [XmlRoot("Test")]
+ public class Bug8468SubclassNoNamespace: Bug8468MidClass
+ {
+ }
+
+ [XmlRoot("Test", Namespace="")]
+ public class Bug8468BaseClassV2
+ {
+ public string Base;
+ }
+
+ public class Bug8468MidClassV2: Bug8468BaseClassV2
+ {
+ public string Mid;
+ }
+
+ [XmlRoot("Test", Namespace="http://test-namespace")]
+ public class Bug8468SubclassV2: Bug8468MidClassV2
+ {
+ }
+
+ [XmlRoot("Test")]
+ public class Bug8468SubclassNoNamespaceV2: Bug8468MidClassV2
+ {
+ }
}