使用 ProtoBuf-Net 进行两组不同的序列化

Posted

技术标签:

【中文标题】使用 ProtoBuf-Net 进行两组不同的序列化【英文标题】:Using ProtoBuf-Net for two different sets of serialization 【发布时间】:2019-07-05 08:06:58 【问题描述】:

我正在使用 ProtoBuf-Net 通过 TCP 发送装饰对象 - 它就像一个魅力。

但我想将相同的对象也序列化到一个文件中,并具有不同的装饰。这意味着,我想在此处保存其他属性。

我认为在运行时操作属性是不可能的,那么我还有什么其他选择?

提前致谢!

(如果之前有人问过这个问题,我很抱歉,但是我找不到任何带有搜索词“不同”的东西)

【问题讨论】:

【参考方案1】:

查看文档:

属性的替代品 在 v2 中,可以使用属性完成的所有操作也可以在运行时通过 >RuntimeTypeModel 进行配置。 Serializer.* 方法基本上只是>RuntimeTypeModel.Default. 的快捷方式,因此要操纵Serializer. 的行为,您必须>configure RuntimeTypeModel.Default.

或者这个问题: Protobuf-net serialization without annotation

基本上,您可以通过 RuntimeTypeModel 自己配置所有内容,而不是注解

【讨论】:

更具体地说:一个 second 模型实例 (TypeModel.Create())。很好的答案。 感谢您和@MarcGravell 的确认。我可以让第一组仍然使用注释而只使用第二组以编程方式吗? @copa017 是;只要在向第二个模型添加类型时将false 作为自动配置参数传递,它就会忽略所有内容

以上是关于使用 ProtoBuf-Net 进行两组不同的序列化的主要内容,如果未能解决你的问题,请参考以下文章

用 Protobuf-net 替换 binaryformatter

使用 protobuf-net 进行枚举序列化

Protobuf-net 对字节数组进行序列化/反序列化

Unity使用protobuf-net进行二进制序列化与反序列化

通过 C# 和 Java 之间的 protobuf-net 进行序列化/解封

我可以使用 Protobuf-net 对已用 Java 序列化的数据进行反序列化吗?