【问题标题】:Protobuf data serializerProtobuf 数据序列化器
【发布时间】:2012-01-21 14:18:45
【问题描述】:

这个数据序列化器非常适合性能。但我一直卡在数据类型为 System.Object 的数据列上,导致序列化程序抛出异常:无法序列化类型为“System.Object”的数据列。

有什么办法吗?

【问题讨论】:

    标签: .net protocol-buffers protobuf-net


    【解决方案1】:

    protobuf 格式旨在适应数据可被接收方预测的场景,但不太适合“对象”场景,但是,根据数据布局,一些事情是可能的:

    • 如果“对象”数据是某种嵌套消息,那么您可以将成员标记为“DynamicType=true”作为 ProtoMemberAttribute 装饰的一部分;然后这包括一些元数据,但作为 protobuf-net 特定的扩展。它在系统之间不会很便携
    • 如果“对象”数据确实是少数已知类型之一,通常是 int/DateTime/float 等,那么有一些方法可以通过继承来表示(非泛型基类型、多个特定 T 子类型) .同样,这在平台之间不会很便携

    如果我更了解模型,我可以说明。

    【讨论】:

      【解决方案2】:

      来自the protobuf-net getting started page

      与 XmlSerializer 不同,成员名称未编码在数据中 - 相反,您必须选择一个整数来标识每个成员。

      换句话说,您需要通过在每个类上定义如何序列化和反序列化它来帮助序列化程序。如果真的需要能够基于 System.Object 自动序列化所有类,protobuf 不适合你。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-04-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-16
        • 1970-01-01
        相关资源
        最近更新 更多