Есть ли причина, по которой двоичный форматировщик .NET будет вызывать GetObjectData несколько раз? - PullRequest
2 голосов
/ 24 октября 2011

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

1 Ответ

3 голосов
/ 02 ноября 2011

Нашел проблему и разрешение. Это была ошибка в .NET. Когда существуют циклические ссылки и используются суррогаты, во время десериализации может возникнуть проблема. Исправление состоит в том, чтобы обернуть внутреннюю суррогатную сериализацию с помощью FormatterServices.GetSurrogateForCyclicalReference (). Похоже, сейчас работает, хотя я постараюсь больше вариантов использования, чтобы исключить любые другие проблемы. Надеюсь, что это кому-нибудь поможет и сэкономит время

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