Я пытаюсь сериализовать с XmlSerializer - но у меня проблемы с классом Derived:
Это мои классы:
[System.Xml.Serialization.XmlIncludeAttribute(typeof(Child))]
[System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.demo.com")]
public class BaseClass {
private int myIntField;
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
public int myInt {
get { return this.myIntField; }
set { this.myIntField = value; }
}
}
[System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.demo.com")]
public class Child : BaseClass {
private int keyField;
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
public int key {
get { return this.keyField; }
set { this.keyField = value; }
}
}
обнаружил, что сериализация для родительского поля работает только,если включено пространство имен:
XmlSerializer mySerializer = new XmlSerializer(typeof(Child));
// NOT WORKING
StringReader sr = new StringReader(
"<Child>" +
"<myInt>10</myInt>" +
"<key>1</key>" +
"</Child>");
/* WORKING
StringReader sr = new StringReader(
"<Child>" +
"<myInt xmlns=\"http://www.demo.com\">10</myInt>" +
"<key>1</key>" +
"</Child>");*/
Child myChild = (Child)mySerializer.Deserialize(sr);
На платформе рабочей станции пространство имен не требуется.
Так что у меня возникают проблемы с использованием веб-сервисов, поскольку пространство имен не включено в родительские поля.