我们使用协议缓冲区在本机 C++ 应用程序之间进行通信,而且还通过 protobuf-net r666 在本机 C++ 应用程序和 .NET 应用程序(都是 VS2012)之间进行通信。我们在 C++ 中严重依赖可用于可选元素的 has_ 函数。
例如,如果我们有一个带有可选 bool 字段的消息,它可能是未设置、设置为 true 或设置为 false。
在 C++ 中,这可以使用函数 has_field 进行检查,如果设置,则可以使用 get_field 函数获取内容。如果未设置,则调用 get_field,则 get 返回默认值,如果未显式设置,则为 false(对于布尔值)。
这在 C++ 中非常有效,但是,在 protobuf-net 中,我们似乎找不到等效的 has_ 函数,并且,当收到消息时,该字段被添加到消息中,并且它的内容被设置为默认值,是假的。该字段默认存在并不是灾难,但问题是没有has_函数来检查它是否在消息中设置。
请告知这是否是一个错误或者我们是否错过了 protobuf-net 中的某些内容并且这实际上是可能的
提前谢谢。维姆