嵌套的Protobuf-net序列化

时间:2013-03-30 14:10:49

标签: c# serialization mono protobuf-net

我有一个似乎没有使用protobuf-net序列化的类,并且它似乎打破了我的类有一个对自己的另一个实例的引用。这是一个例子(从我的实际代码中大大简化):

[ProtoContract]
public sealed class Acorn
{
    [ProtoMember(50)]
    public string Investment;
    [ProtoMember(51)]
    public string Broker;
    [ProtoMember(52)]
    public Acorn DefaultTransferAcorn;
}

据我所知,它是对Acorn类中另一个似乎导致问题的Acorn类的引用。我在单声道中收到以下错误消息:

System.Reflection.TargetInvocationException:调用目标抛出了异常。 ---> ProtoBuf.ProtoException:检测到可能的递归(偏移量:4级):AcornTrail3.Acorn

这是protobuf-net的限制,还是有办法使这项工作?

1 个答案:

答案 0 :(得分:5)

默认情况下,protobuf是一个“树”结构。 Protobuf-net增加了图形支持。将AsReference = true添加到受影响的ProtoMember。