.NET Compact Framework 3.5派生类的序列化问题

时间:2011-03-23 18:03:49

标签: .net compact-framework xml-serialization xmlserializer

我尝试使用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时遇到问题,因为命名空间不包含在父字段中。

2 个答案:

答案 0 :(得分:0)

我不确定我理解。 Web服务是用.net还是用coldfusion写的?你的问题有点类似于冷却,但据我所知,cfc(类)在cf3.5中不存在。

不要太提及你使用的是绝对古老的cf版本。版本9已经推出一年多了。

答案 1 :(得分:0)

对于派生类作为WebServices中的响应,我有一个使用SoapExtension和Reflection的WorkAround。