Csharp/C#教程:序列化图形时出现exception分享


序列化图形时出现exception

我还在玩新发布的protobuf-net版本,我正面临一个我不明白的问题。

让我们考虑以下代码:

[ProtoContract] class Node { public Node() { Children = new List(); } [ProtoMember(1, IsRequired = true)] public int Data { get; set; } [ProtoMember(2, IsRequired = true, AsReference = true)] public List Children { get; set; } public void AddChild(Node child) { Children.Add(child); } } static void Main() { Node n = new Node {Data = 0}, root = n; for (int i=1; i<15; i++) { Node child = new Node {Data = i}; n.AddChild(child); n = child; } Node clone = Serializer.DeepClone(root); } 

它抛出ProtoException类型的exception,并显示消息“检测到可能的递归…”

有趣的是,如果我删除子属性上的属性AsReference它不会! 不幸的是,上面的行只是为了说明问题而写的,我需要这个属性用于我正在使用的真实结构。

所以我的问题是……它是一个已知的问题,是否有任何补丁计划很快修复它? 或者有人知道任何解决方法吗?

谢谢

这只是一个错误(感谢你如此彻底地运用测试版!) – 在动态/引用处理中,它是对对象进行双重计算(一次作为shim包装器的一部分,它欺骗了魔法,一次用于对象本身)。

为了提高效率,递归检测仅在特定深度之外进入全齿轮。 你的代码绊倒了这个深度,导致重复计算被视为递归。 我已在代码中修复此问题。 上面的代码在本地传递,并将在下一个下降。

上述就是C#学习教程:序列化图形时出现exception分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/942256.html

(0)
上一篇 2021年11月13日
下一篇 2021年11月13日

精彩推荐