不知道如何反映其中之一



我有一个定义如下的 protobuf 消息

message Foo
{
oneof test  //oneof field
{
int32 a = 1;
MM b = 2;
}
}
message MM
{
string  str =1;
}

我如何反映在普罗托布夫提起的诉讼之一

在大多数情况下,处理消息的方式与处理消息的方式相同,没有:

message Foo
{
int32 a = 1;
MM b = 2;
}

其中一个对反射基本上是透明的,并且不会影响导线格式。它的效果是,生成的 setter 代码会在设置一个成员时自动清除其中一个成员的其他成员。

现在,如果您出于某种原因关心其中一个,那么Descriptor::oneof_decl允许您枚举它们、Descriptor::FindOneofByNameFieldDescriptor::containing_oneof(如果您正在从现场开始工作(。有了OneofDescriptor,您就可以找到它的名称并枚举其字段,仅此而已。

相关内容

最新更新