,同时与新发布的protobuf.net打,我们遇到下面的代码说明问题:问题序列化图形与protobuf.net
[ProtoContract]
class Node
{
public Node()
{
ChildLinks = new List<Link>();
ParentLinks = new List<Link>();
}
[ProtoMember(1, IsRequired = true)]
public string Data { get; set; }
[ProtoMember(2, IsRequired = true)]
public List<Link> ChildLinks { get; set; }
[ProtoMember(3, IsRequired = true)]
public List<Link> ParentLinks { get; set; }
public void AddChild(Node child)
{
Link link = new Link { Parent = this, Child = child };
ChildLinks.Add(link);
child.ParentLinks.Add(link);
}
}
[ProtoContract]
class Link
{
[ProtoMember(2, AsReference = true, IsRequired = true)]
public Node Child { get; set; }
[ProtoMember(3, AsReference = true, IsRequired = true)]
public Node Parent { get; set; }
}
public static void Main()
{
Node node = new Node { Data = "parent" };
node.AddChild(new Node { Data = "child" });
using (MemoryStream memStream = new MemoryStream())
{
Serializer.Serialize(memStream, node);
memStream.Position = 0;
Node deserialized = Serializer.Deserialize<Node>(memStream);
Link childLink = deserialized.ChildLinks.Single();
Debug.Assert(ReferenceEquals(childLink, childLink.Child.ParentLinks.Single()));
}
}
断言抛出一个异常...我们的目标在这里是在ChildLinks和ParentLinks属性中有一个Link对象的唯一实例。我们尝试了AsReference属性,但它不起作用...
有没有人知道我们如何解决这个问题?
您好侧步此;目前我陷入了一些可怕的错误。几乎无法阅读/思考。一旦我身体健康,我会尽快查看。 – 2011-05-23 17:44:15
(要清楚 - 这里的“错误”,我的意思是“疾病”,而不是“软件问题”) – 2011-05-23 18:04:20
清除液体和休息,先生。最后,我可以帮助Marc的问题:) – user7116 2011-05-23 18:56:32