protobuf.net 和条件序列化
本文关键字:序列化 条件 net protobuf | 更新日期: 2023-09-27 18:31:18
我们使用 protobuf.net 在移动设备和后端服务之间序列化类,但现在我们需要根据用户的"上下文"调整发送回客户端的内容。
我们通常通过实现 ISerializable 接口并查看上下文值来决定要序列化的内容来执行此操作。 同样,在构造函数中,我们将反序列化提供的值。
但是似乎ISerializable没有实现/支持(我可以看到为什么)protobuf.net,所以我们通过采用"ShouldSerialize*"和"OnSerializing"方法来解决这个问题。 然而,这确实意味着我们最终不得不将 StreamingContext 存储在每个感觉不对的类中。 我们可能会将其放在全局中,但这感觉也不对。
有没有更好的方法来实现我们想要的东西,例如,序列化仅使用 protobuf.net 格式,但序列化的内容受外部提供的上下文的影响?
这是一个很好的问题。当前支持的模式(ShouldSerialize* 等)完全是"按原样"从 BCL 借用的,因此没有上下文 - 但是没有理由它不能像回调那样支持参数 - 事实上,对于回调,它几乎支持任何用法(有/没有上下文等) - 所以我想不出一个很好的理由不在这里支持它们。
你是对的,不是说它目前不受支持,但它可能是 - 让我知道这将是有用的。