我尝试用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