Я пытаюсь сериализовать граф объектов в JSON.NET, в котором Galaxy содержит StarSystems, StarSystem содержит Планеты, Планета содержит Колония, Колония имеет Владельца, а у Галактики также есть список Империй, каждый из которых имеет список изученных StarSystems. Итак, есть круговая ссылка между StarSystem, Planet и Empire.JSON.NET молча игнорирует круговые ссылки и устанавливает произвольные ссылки в цепочке на нуль, чтобы их разрешить
То, что я не понимаю, - это поведение, которое я получаю, когда я сериализую объектный граф. Вместо того, чтобы бросать ошибку, когда я имею обработку опорного контура установлен по умолчанию, и пытается сериализовать все, когда я его установить в режим сериализации, это, кажется, сериализации несколько звеньев в цепи, а затем отказавшись и настройки произвольных значений (в моем случае исследуемые звездные системы) до нуля. Естественно, это вызывает сбои в другом месте приложения, когда он ищет звездные системы, но находит только нули!
Может ли это иметь отношение к тому факту, что некоторые из звеньев в цепочке не являются прямыми ссылками, а коллекциями? Например. у империи нет одной разведанной звездной системы, но список из них.
Так как я могу сделать JSON.NET сериализацией всего? Нужно ли мне устранять циклические ссылки и просто передавать объекты ID вместо фактических ссылок на объекты в моей объектной модели? Я действительно не хочу это делать только для сериализации!
У вас есть код? –
У JSON.NET не должно быть проблем с сериализацией любого графа объектов (или восстановление его корректно). Скорее всего, ваш код нарушен (например, если вы делаете неожиданные вещи в установщиках свойств). Опубликовать код ... –
Не знаете, какой код был бы полезен - код, когда я называю сериализатором? Что-то другое? (Если я не сохраняю и не перезаряжаю игру, а просто работаю в памяти, все выглядит нормально.) – ekolis