Какой из них лучше справляется с управлением версиями? XmlSerializer против DataContractSerializer? - PullRequest
4 голосов
/ 19 мая 2009

При необходимости сериализации объекта, и возможно, что версия сборки изменилась при десериализации. Кроме того, может случиться так, что объект немного изменится.

XmlSerializer не хранит информацию о типе, и если объект немного изменяется, он просто не выходит из строя, но XmlSerializer не может сериализовать частные или внутренние свойства из суперкласса, который я не могу пометить атрибутами. Итак, я взглянул на DataContractSerializer. Выглядит нормально, так что проблема с частными / внутренними свойствами суперкласса будет решена, все свойства должны быть помечены, и они мне не нужны, но как насчет информации о типе? И как ведет себя DataContractSerializer, если некоторые свойства удалены, переименованы или добавлены?

Ответы [ 3 ]

2 голосов
/ 20 мая 2009

Я провел тест с DataContractSerializer, и кажется, что DataContractSerializer очень терпим к изменениям объекта, поэтому я воспользуюсь подходом.

1 голос
/ 27 сентября 2010

Это не помечено как вопрос WCF, но тот факт, что вы говорите о DataContractSerializer, заставляет меня думать, что вы работаете в WCF. Если это так, возможно, вам не стоит заглядывать в интерфейс IExtensibleDataObject.

См:

http://msdn.microsoft.com/en-us/library/system.runtime.serialization.iextensibledataobject.aspx

и

http://msdn.microsoft.com/en-us/library/ms731138.aspx

0 голосов
/ 19 мая 2009

Все еще можно использовать XmlSerializer для ваших нужд. Но вам придется реализовать собственную логику сериализации, используя интерфейс IXmlSerializable.

...