使用protobuf-net v2序列化ArrayList

时间:2011-11-25 13:29:37

标签: protobuf-net

我是一名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

这里缺少什么?

1 个答案:

答案 0 :(得分:1)

在大多数情况下,protobuf-net更喜欢同质数据;在你的情况下,你似乎存储列表;您将list设为List<string>,然后才能正常工作

protobuf(格式,而不是protobuf-net)是围绕预期和已知的架构设计的;你不能只说“一个对象” - 它想要了解更多。我protobuf-net我已经添加了各种调整和行程以实现这一目标,但最合适的方法将取决于您的实际模型正在尝试做什么完全。到目前为止,它试图存储2个字符串; List<string>是最合适的方式。就像我说的那样,还有一些其他方法可以用异构数据做类似的事情。