我正在尝试在 JSON.NET 中序列化一个对象图,其中一个 Galaxy 包含 StarSystems,一个 StarSystem 包含行星,一个行星包含一个殖民地,一个殖民地有一个所有者,并且银河也有一个帝国列表,每个帝国有一个探索过的 StarSystems 的列表。所以 StarSystem、Planet 和 Empire 之间存在循环引用。
我不明白的是我在序列化对象图时得到的行为。当我将参考循环处理设置为默认值时并没有抛出错误,而是在我将其设置为序列化模式时尝试序列化所有内容,它似乎是在序列化链中的一些链接,然后放弃并设置任意值(在我的情况下,探索的恒星系统)为空。当它寻找星型系统但只找到空值时,这自然会导致应用程序的其他地方崩溃!
这可能与链中的某些链接不是直接引用而是集合这一事实有关吗?例如,一个帝国没有一个探索过的星系,而是一个列表。
那么如何让 JSON.NET 序列化所有内容呢?我是否需要消除循环引用并只传递对象的 ID 而不是对象模型中的实际对象引用?我真的不想仅仅为了序列化目的而这样做!