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