Как часто следует вызывать метод каждого объекта GetobjectData во время пользовательской сериализации?

StackOverflow https://stackoverflow.com/questions/3865297

Вопрос

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

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

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

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

Спасибо.

Это было полезно?

Решение

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top