我嘗試用XmlSerializer的序列化 - 但我有派生類問題:.NET Compact Framework的3.5序列化問題與派生類
這些都是我的課:
[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);
在工作站框架上,不需要名稱空間。
所以我得到的問題,使用webservices,因爲命名空間不包含在父領域。
您確定它是版本3.5嗎?我不認爲這個版本存在。有3/3.1和4/4.5。我從第5版開始就一直在使用CF,所以如果它真的是3.x版,它可能不支持現代Web服務標準。 – 2011-03-23 13:59:20
你不使用ColdFusion,所以你不應該包含coldfusion標籤。 ColdFusion!= Compact Framework。它看起來好像這是你在這個問題上的第二篇文章(第一:http://stackoverflow.com/questions/5402678/webservice-cf-3-5-and-class-inheritance/),並且你錯誤地標記了它倍。 – 2011-03-23 18:29:07
ooo我看到了 - 感謝您的建議 – judwei 2011-03-23 18:43:42