我是一名protobuf-net初学者,刚安装了v2r470,即可使用
在我的C#-WinForm应用程序中。
序列化"InvalidOperationException was unhandled" - "No serializer defined for type: System.Object"
时,我得到ArrayList
。
可序列化的类:
[ProtoContract]
public class ProtoData
{
[ProtoMember(1)]
ArrayList list = new ArrayList();
public ProtoData()
{
list.Clear();
list.Add("Hello");
list.Add("World");
}
}
序列化
ProtoData pData = new ProtoData();
var file = File.Create("protodata.bin");
Serializer.Serialize<ProtoData>(file, pData); // <<----- error
这里缺少什么?
答案 0 :(得分:1)
在大多数情况下,protobuf-net更喜欢同质数据;在你的情况下,你似乎存储列表;您将list
设为List<string>
,然后才能正常工作。
protobuf(格式,而不是protobuf-net)是围绕预期和已知的架构设计的;你不能只说“一个对象” - 它想要了解更多。我protobuf-net我已经添加了各种调整和行程以实现这一目标,但最合适的方法将取决于您的实际模型正在尝试做什么完全。到目前为止,它试图存储2个字符串; List<string>
是最合适的方式。就像我说的那样,还有一些其他方法可以用异构数据做类似的事情。