C# 序列化图形时发生异常
我仍然在玩最新发布的protobuf net版本,我面临着一个我不理解的问题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
让我们考虑下面的代码:
[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等