Как сделать десериализацию класса под другим именем - PullRequest
6 голосов
/ 16 января 2012

например что-то вроде:

<apple />

будет очень хорошо сериализован в класс под названием "яблоко". однако, если я хочу назвать этот класс «Дракон», он не будет сериализован (что имеет смысл). Я хочу знать, как разметить «Дракон» так, чтобы, когда XmlSerializer увидел его, он знал, что «Дракон» такой же, как

Ответы [ 2 ]

8 голосов
/ 16 января 2012

Предполагая, что Dragon определяет по крайней мере расширенный набор свойств и полей, которые apple делает, тогда ответ компетентного_технологии уместен, хотя я думаю, что ваш вопрос на самом деле задает вопрос:

[System.Xml.Serialization.XmlType("apple")]
public class Dragon

Если Dragon не совместим с apple, то вам может быть лучше выполнить явное преобразование между типами. Предполагая, что ваше приложение знает определения как apple, так и Dragon, это можно сделать, десериализовав ваш поток apple в объект apple, отобразив свойства в новый объект Dragon, а затем сериализовав ваш Dragon объект.

5 голосов
/ 16 января 2012

Вы хотите добавить System.Xml.Serialization.XmlTypeAttribute в класс.

[System.Xml.Serialization.XmlType("Dragon")]
public class apple
...