Как часто должен вызываться метод GetObjectData каждого объекта во время пользовательской сериализации? - PullRequest
1 голос
/ 05 октября 2010

Я сериализую данные в своем приложении, используя пользовательскую сериализацию, т.е. каждый из классов, которые я храню, имеет атрибут [Serializable] и реализует ISerializable.Сериализуемый граф объектов является достаточно сложным с множеством перекрестных ссылок между объектами / классами.Сериализация работает , но она довольно медленная.: (

Установив точку останова в методе GetObjectData каждого соответствующего класса, я обнаружил, что получаю гораздо больше хитов, чем объектов.

I 'Я в замешательстве - мое понимание структуры сериализации заключалось в том, что каждый объект будет храниться только один раз, даже если в графе объектов содержится несколько ссылок на него.Я не прав?

И если да, могу ли я что-то сделать в этом подходе, чтобы уменьшить количество вызовов методов GetObjectData моих классов?

Спасибо.

1 Ответ

3 голосов
/ 05 октября 2010

Документы MSDN не гарантируют только 1 вызов на экземпляр объекта.

Вы пробовали это с разными форматерами?Здесь есть комментарии о том, что для улучшения этого была сделана выбранная работа.специально для Indigo (он же WCF).

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

...