Проблема сериализации в .NET Compact Framework 3.5 с производными классами - PullRequest
0 голосов
/ 23 марта 2011

Я пытаюсь сериализовать с 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);

На платформе рабочей станции пространство имен не требуется.

Так что у меня возникают проблемы с использованием веб-сервисов, поскольку пространство имен не включено в родительские поля.

Ответы [ 2 ]

0 голосов
/ 24 марта 2011

Для производных классов в качестве ответа в WebServices у меня есть WorkAround с использованием SoapExtension и Reflection.

0 голосов
/ 23 марта 2011

Я не уверен, что понимаю. Веб-сервис написан на .net или coldfusion? Ваш вопрос вроде как будто это Coldfusion, но, насколько мне известно, cfc (классы) не существовало в cf3.5.

Не стоит упоминать, что вы используете абсолютно древнюю версию cf. Версия 9 доступна уже больше года.

...