C# 尝试序列化时发生自引用循环错误

C# 尝试序列化时发生自引用循环错误,c#,serialization,visual-studio-2013,json.net,unit-class-library,C#,Serialization,Visual Studio 2013,Json.net,Unit Class Library,我正在尝试序列化一个对象(特别是,)。因为这个库显然不支持序列化,所以我愿意出于自己的目的修改它 但是,我不确定如何诊断正在发生的这个问题。在尝试使用JSON.net序列化对象时,我遇到了以下错误(我还尝试使用内置工具进行XML序列化,并遇到类似错误) 其他信息:检测到类型为“UnitClassLibrary.DistanceEqualityStrategy”的属性“EqualityStrategy”的自引用循环。路径“”。 但是,在距离对象的代码中,我似乎找不到任何自引用循环。我怎样才能开始诊

我正在尝试序列化一个对象(特别是,)。因为这个库显然不支持序列化,所以我愿意出于自己的目的修改它

但是,我不确定如何诊断正在发生的这个问题。在尝试使用JSON.net序列化对象时,我遇到了以下错误(我还尝试使用内置工具进行XML序列化,并遇到类似错误)

其他信息:检测到类型为“UnitClassLibrary.DistanceEqualityStrategy”的属性“EqualityStrategy”的自引用循环。路径“”。

但是,在距离对象的代码中,我似乎找不到任何自引用循环。我怎样才能开始诊断这个问题

我目前正在尝试像这样序列化:

        Distance newDistance = new Distance();
        var json = JsonConvert.SerializeObject(newDistance);

这导致了错误。我可以修改我正在使用的库,但我没有。

在过去,我看到当对象中有一个嵌套对象引用回原始对象时,会导致此问题

例如,假设您有一个名为Project的对象,并且它有一个属性是对象类型用户。现在,在用户对象内部是一个嵌套对象,它引用回原始项目对象

通过使用以下JsonSerializerSetting,我可以忽略嵌套循环序列化

在下面的示例中,“项目”是项目对象的列表

string json = Newtonsoft.Json.JsonConvert.SerializeObject(projects, Newtonsoft.Json.Formatting.Indented,
                new Newtonsoft.Json.JsonSerializerSettings()
                    {
                        ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore
                    }
                );

请发布修改后的对象代码。试图澄清EBrown。问题可能是由于
公共距离平等策略
对象,该对象本身是两个
距离
对象的
委托
。我想这就是问题所在。您需要指定JSON序列化程序和XML序列化程序,而不是序列化该对象。(
[ScriptIgnore]
[XmlIgnore]
)我试试看。我目前无法引用System.Web,因为UCL是PCL,但我可以制作一个非PCL版本,因为这并不重要。因为您使用的是json.net,所以属性应该是。