对于此代码...
private void Label1_MouseUp(object sender, RoutedEventArgs e)
{
Newtonsoft.Json.Linq.JObject.FromObject(e).ToString();
}
我收到此错误...
Self referencing loop detected with type 'System.Windows.Documents.Run'. Path 'MouseDevice.Target.Inlines[0].SiblingInlines'.
还有很多其他类似的问题,但我无法弄清楚如何在我的情况下实现解决方案(我正在学习C#)。例如。添加ReferenceLoopHandling = ReferenceLoopHandling.Ignore
但是无法弄清楚放在哪里。
(顺便说一下,我试图找到一种打印调试信息的简单通用方法。)
答案 0 :(得分:2)
在您的问题中,您说您无法确定ReferenceLoopHandling = ReferenceLoopHandling.Ignore
的放置位置。您可以在调用“FromObject'如下:
JObject.FromObject(e, new JsonSerializer() {
ReferenceLoopHandling = ReferenceLoopHandling.Ignore });
这是指向JObject.FromObject文档的链接: http://james.newtonking.com/json/help/index.html?topic=html/CreatingLINQtoJSON.htm
答案 1 :(得分:0)
是的,这是一个非常常见的问题,错误信息说明了这一切。
正如你猜测你得到的是已经被serilize的引用因此导致无限制的递归来对该对象进行serilize。如果您将其标记为忽略ReferenceLoopHandling
,则serilize将继续工作,并为您生成StackoverflowException
。
相反,你有几个解决方案,其中有2个:
null
。