Почему DataContractSerializer обходит инициализаторы? - PullRequest
3 голосов
/ 22 июня 2010

Почему DataContractSerializer обходит инициализаторы?

Справочная информация:

Модуль форматирования сериализации получает неинициализированные экземпляры классов во время десериализации.То есть случаи, когда для всех полей установлены значения по умолчанию.Для ссылочных типов это будет нулевым.Вот почему «авторы» в этом случае вызывают исключение нулевой ссылки.Вы должны создать его в свойстве, как код, который вы закомментировали.Включив этот «ленивый» код инициализации для авторов, вы можете удалить поле инициализатора.Кроме того, вы должны изменить конструктор, чтобы использовать Свойство, а не поле direclty.

/ Calle http://social.msdn.microsoft.com/Forums/en-CA/netfxremoting/thread/b786050e-4850-4739-8b2e-d57e35d95952

1 Ответ

3 голосов
/ 22 июня 2010

По соображениям производительности - кажется, десериализация с использованием конструктора по умолчанию без параметров и установка свойств довольно медленна - способ, которым WCF обрабатывает это намного быстрее.

По этой причине DataContractSerializer не требует общедоступного конструктора без параметров (как это делает XmlSerializer) - вам это не нужно, он все равно не будет использоваться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...