我使用protobuf-net进行二进制序列化。在序列化 A类时,我是gettig OutOfMemory。使用BinaryFormatter很好地序列化了同一个对象。
以下是课程示例:
[ProtoContract]
class A:
[ProtoMember(1, DataFormat = DataFormat.Group)]
B[] Array1 {get; set;}
....
class B:
[ProtoMember(1)]
string Field1 {get; set;}
[ProtoMember(2)]
string Field1 {get; set;}
[ProtoMember(3, DataFormat = DataFormat.Group)]
C[] Array2 {get; set;} // 20000 elements
....
class C:
[ProtoMember(1)]
string Field1 {get; set;}
[ProtoMember(2)]
string Field1 {get; set;}
答案 0 :(得分:5)
哇。简直哇哇谢谢你提出这个问题。有一个小故障,它在某些情况下错误地不应用组编码,包括你的。对于protobuf-net来说,这不是一个大问题,因为组和字符串是可以互换的,但这仍然是一个令人尴尬的小故障,尤其是因为“组”是(正如你已经正确使用的)关键在于向前发展 - 仅用于序列化大图。
我已经在本地和源代码中修复了这个问题 - 但是,我想在进行正式发布之前进行更多的稳定性测试。如果您乐意从源代码构建,它现在应该可以正常工作 - 或者如果您愿意,我可以给您发送电子邮件。