C# 用ProtoBuf-Net反序列化嵌套动态类型的问题

C# 用ProtoBuf-Net反序列化嵌套动态类型的问题,c#,protobuf-net,C#,Protobuf Net,我正在尝试使用ProtoBuf Net r668反序列化一个封装在几个DynamicType=true层中的对象 使用旧版本的ProtoBuf Net(v1),它将毫无问题地进行反序列化。然而,在最新版本中,它在以下方面失败 ProtoBuf.ProtoException:内部错误;出现密钥不匹配 [协议] 私人甲级 { [原型成员(1,DynamicType=true)] 公共对象主体{get;set;} } [原始合同] 私人乙级 { [原型成员(1,DynamicType=true)] 公

我正在尝试使用ProtoBuf Net r668反序列化一个封装在几个DynamicType=true层中的对象

使用旧版本的ProtoBuf Net(v1),它将毫无问题地进行反序列化。然而,在最新版本中,它在以下方面失败

ProtoBuf.ProtoException:内部错误;出现密钥不匹配

[协议]
私人甲级
{
[原型成员(1,DynamicType=true)]
公共对象主体{get;set;}
}
[原始合同]
私人乙级
{
[原型成员(1,DynamicType=true)]
公共对象主体{get;set;}
}
[原始合同]
私人C类
{
[原成员(1)]
公共字符串名称{get;set;}
}
[测试]
public void Try_序列化_嵌套_动态类型()
{
var obj=newa(){Body=newb(){Body=newc(){Name=“Brian”}};
var serializer=newprotobufserializer();
var results=serializer.Serialize(obj);
var g=序列化程序。反序列化(结果);
}

你刚刚解决了我的问题!我原以为“AsReference”开关就是问题所在(并且已经在调试protobuf网络源代码)。但不是-这是动态图像类型@MarcGravel-我也有同样的问题。这件事有没有可能解决,或者很快就会解决?管理复杂/动态合同的其他建议?这种情况仍然存在,我们如何“扭转”这个问题?与João一样,我也提到了这个问题,尽管最近发布了大量新版本,但似乎没有得到解决。我想我会给Github添加一个问题,看看这是否会引起注意?
    [ProtoContract]
    private class A
    {
        [ProtoMember(1, DynamicType = true)]
        public object Body { get; set; }
    }
    [ProtoContract]
    private class B
    {
        [ProtoMember(1, DynamicType = true)]
        public object Body { get; set; }
    }
    [ProtoContract]
    private class C
    {
        [ProtoMember(1)]
        public string Name { get; set; }
    }

    [Test]
    public void Try_Serialize_Nested_DynamicTypes()
    {
        var obj = new A() {Body = new B() {Body = new C() {Name = "Brian"}}};
        var serializer = new ProtoBufSerializer();
        var results = serializer.Serialize(obj);
        var g = serializer.Deserialize<A>(results);
    }