我们正在使用protobuf.net在移动设备和后端服务之间序列化类,但我们现在需要根据用户的“上下文”调整发送回客户端的内容。
我们通常会通过实现ISerializable接口并查看上下文值来决定要序列化的内容。类似地,在构造函数中,我们将反序列化提供的值。
但似乎ISerializable没有为protobuf.net实现/支持(我可以看到原因),所以我们通过采用'ShouldSerialize *'和'OnSerializing'方法解决了这个问题。然而,这确实意味着我们最终必须将StreamingContext存储在每个感觉不正确的类中。我们可能会把它放在全球范围内,但这也感觉不对。
有没有更好的方法来实现我们想要的,例如序列化只使用protobuf.net格式,但序列化受外部提供的上下文影响?
答案 0 :(得分:0)
这是一个很好的问题。目前支持的模式(ShouldSerialize *等)完全从BCL借用,因此没有上下文 - 但是没有理由它不能以与回调相同的方式支持参数 - 实际上,它支持的回调几乎任何用法(有/没有上下文等) - 所以我想不出一个很好的理由不在这里支持它们。
你说它目前不支持,但它可能是 - 让我知道这将是有用的。