C# 序列化图形时发生异常

C# 序列化图形时发生异常,c#,protobuf-net,C#,Protobuf Net,我仍然在玩最新发布的protobuf net版本,我面临着一个我不理解的问题 让我们考虑下面的代码: [ProtoContract] class Node { public Node() { Children = new List<Node>(); } [ProtoMember(1, IsRequired = true)] public int Data

我仍然在玩最新发布的protobuf net版本,我面临着一个我不理解的问题

让我们考虑下面的代码:

    [ProtoContract]
    class Node
    {
        public Node()
        {
            Children = new List<Node>();
        }

        [ProtoMember(1, IsRequired = true)]
        public int Data { get; set; }

        [ProtoMember(2, IsRequired = true, AsReference = true)]
        public List<Node> 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);
    }
[协议]
类节点
{
公共节点()
{
Children=新列表();
}
[原成员(1,IsRequired=true)]
公共int数据{get;set;}
[原成员(2,IsRequired=true,AsReference=true)]
公共列表子项{get;set;}
公共void AddChild(节点子节点)
{
添加(child);
}
}
静态void Main()
{
节点n=新节点{Data=0},根=n;
对于(inti=1;i这只是一个bug(感谢您如此彻底地使用beta!)-在动态/引用处理中,它重复计算了对象(一次作为垫片包装的一部分,它欺骗了对象来实现魔术,另一次用于对象本身)


为了提高效率,递归检测只会在特定深度之外全速运行。您的代码超出了此深度,导致重复计数被视为递归。我已在代码中修复了此问题。上面的代码将在本地传递,并将在下一个下降中。

有趣的…我将稍后查看我已为此推送了代码修复程序;我计划在r很快就可以通过电子方式发布DLL了#是的!非常感谢!我将下载并编译源代码以继续对新版本进行bug攻击:)下载和编译的资料来源:我确认我的错误已经修复!!再次感谢编辑:啊,很抱歉我没有刷新我的屏幕并看到你r评论:PHi Marc请分享下载的最新链接,其中包含此作为bug@Aada您最好的选择是在VisualStudio中使用NuGet包管理器,这样可以轻松地保持最新;NuGet软件包只是“protobuf net”。谷歌代码为@Aada的“protobuf net r640.zip”包含许多不同框架的不同文件夹,包括.net 2.0、.net 3.0等