Сериализация POCO, исключая участников класса - PullRequest
4 голосов
/ 18 июня 2009

Я хочу сделать POCO [Serializable], но не любые другие члены класса в его дереве иерархии классов. Я знаю, что есть [NonSerialized], который работает только для полей, но есть ли способ исключить их или выбрать конкретные элементы, используя [Serializable] в POCO?

1 Ответ

4 голосов
/ 18 июня 2009

Вы должны посмотреть на DataContractSerializer; он использует подход "opt-in" для сериализации.

Также было бы неплохо прочитать XmlSerializer vs DataContractSerializer: сериализация в Wcf для примеров и сравнения между DataContractSerializer и XmlSerializer.

XmlSerializer был в .Net с версии 1.0 и служит нам хорошо для всего от Remoting, веб Сервисы, сериализация в файл и др. Однако в .Net 3.0 Пришел DataContractSerializer. И вдруг много указаний предполагает, что мы должны использовать его более старый проверенный и верный XmlSerializer. Wcf даже использует это как значение по умолчанию механизм сериализации. Вопрос в том, действительно ли это лучше? Приговор да, и нет. Как и большинство все зависит от вашего реализация и что вам нужно. За Wcf, вы должны предпочесть использовать DataContractSerializer. Если тебе надо полный контроль над тем, как выглядит XML Тем не менее, вы должны вернуться к XmlSerializer.

...