C# 如何序列化字典<;int,List<;客户对象>&燃气轮机;使用protobuf.net?

C# 如何序列化字典<;int,List<;客户对象>&燃气轮机;使用protobuf.net?,c#,protocol-buffers,C#,Protocol Buffers,我有一个复杂的物体,就像 Dictionary<ulong, List<MyObject>> 字典 而MyObject是从 List<A> 列表 当我想序列化字典时,它会引发如下异常: [System.NotSupportedException]={“不支持嵌套或交错列表和数组:System.Collections.Generic.List`1[[xxxx.MyObject,xxxx,Version=0.0.1.0,Culture=neutral,Pu

我有一个复杂的物体,就像

Dictionary<ulong, List<MyObject>>
字典
而MyObject是从

List<A>
列表
当我想序列化字典时,它会引发如下异常: [System.NotSupportedException]={“不支持嵌套或交错列表和数组:System.Collections.Generic.List`1[[xxxx.MyObject,xxxx,Version=0.0.1.0,Culture=neutral,PublicKeyToken=null]]”

如何解决?
我的protobuf是2.3.2.0版

这里的问题是列表。这根本不受支持,因为它不能在底层协议(protobuf)中表达

选项:

  • 切换到不是列表但有列表的列表
  • 保留现有模型,但在自定义类型(将列表子类化的类型)上设置“忽略列表处理”标志,并通过属性公开列表内容

嗨,马克,我遇到了完全相同的问题。我发布了两行代码,显示了我之前和之后的内容:正如您所看到的,我使用了列表,当我反序列化时,列表将变为null,即使我在序列化到磁盘之前初始化了一个空列表。现在我切换到我自己的ItemList,它封装了列表本身,但是这个对象仍然是空的。这正常吗?非常感谢你的帮助。@Marc:是因为我有嵌套字典吗?如果是这样的话,我应该创建自己的包含所有这些数据的对象吗?@JoanVenge从protobuf的角度来看:
null
vs empty不是一件事;只有“项目”
null
没有项目,empty没有项目,因此无法单独描述这些内容。@MarcGravel非常感谢Marc。那样的话,你有什么建议?我应该有一个字符串字典,MyOwnDict,其中MyOwnDict在里面,有一个十进制字典,OrderList,OrderList在里面,有一个顺序列表吗?这样行吗?这就是我刚才想做的。或者你是说如果我的列表不是空的,那么它就可以工作了?再次非常感谢。