使用 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
Unity使用protobuf-net进行二进制序列化与反序列化