最初,程序通过自己定义的行为将数据保存到文件中。首先,数据定义如下:
struct Data{
DWORD m_Location;
BYTE m_StableCount;
BYTE extra[3]; /* nice 4 byte divisible value */
// the following data is not stored in the file
DWORD m_Uid;
WORD m_Address;
};
m_Uid
之前的那些字段将存储到文件中,但其他字段不存储。
现在,我想将Data
转换为protocol buffer message
。据我所知,消息中定义的所有字段都可以序列化。所以我必须将Data
拆分为两部分:一部分包括所有已保存的字段,另一部分包括其余字段。
这是我的问题:如果我在一条消息中声明Data
的所有字段,并且仅序列化协议缓冲区中的某些部分字段,该怎么办?任何API都支持它吗?
提前致谢。
答案 0 :(得分:0)
这在很大程度上取决于您使用的库。许多协议缓冲区实现作为模式中的代码生成,并且 使用生成的DTO - 因此您需要将数据推送到不同的对象模型中。这是一个实现细节 - 它不是协议要求。例如,protobuf-net允许使用现有模型,并且可以忽略/包含通常和特定的值(即它允许每个实例有条件序列化,使用.NET世界的标准约定来完成这些事情。但是,我假设您的问题与非.NET代码有关,在这种情况下,挑战将是找到允许这种方法的C / C ++库。