我想用自己的版本号标记每个protobuf序列化数据。所以如果需要,我可以检查用于序列化数据的版本。尽管protobuf是围绕创意设计的,因此您无需检查版本。
为此,我可以使用相同的方式在.net序列化中添加版本字段。
只是想确认这是在protobuf中做的首选方法。
class protodata1
{
public protodata1()
{
version = 1;
}
[Protomember(1)]
int version { get; set;}
[Protomember(2)]
int somedata { get; set;}
}
还应该像protobuf网上面那样做? 在构造函数中指定版本,如果类被去除化,将获得覆盖。对于要序列化的新对象,它将使用版本1
答案 0 :(得分:1)
好吧,如果你的“版本”的含义只是一个数据字段,那么肯定;只需将其添加为序列化成员即可。请注意,这在序列化期间没有任何特殊含义(例如,通过替代合同运行) - 尽管如果您需要支持可能是“v2”中的选项em>从根本上不同的消息结构(无论如何都是一个坏主意)。
我可能添加的唯一警告是未已包含此数字的任何现有数据将声称为“版本1”。在“v2”中,另一种选择是使用跳过构造函数的WCF方法(如果需要)。这意味着这些情况默认为“版本0” - 可能不那么令人困惑(或者可能更令人困惑;我会让你决定)。