我尝试使用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);
在工作站框架上,不需要命名空间。
所以我在使用webservices时遇到问题,因为命名空间不包含在父字段中。
答案 0 :(得分:0)
我不确定我理解。 Web服务是用.net还是用coldfusion写的?你的问题有点类似于冷却,但据我所知,cfc(类)在cf3.5中不存在。
不要太提及你使用的是绝对古老的cf版本。版本9已经推出一年多了。
答案 1 :(得分:0)
对于派生类作为WebServices中的响应,我有一个使用SoapExtension和Reflection的WorkAround。