使用protobuf枚举值作为字段编号

4

我想知道是否可能将Google Protocol Buffers的枚举常量用作其他消息的字段编号,例如

enum Code {
  FOO = 100;
  BAR = 101;
}

message Message {
  required string foo = FOO;
}

这段代码无法运行,因为FOO的类型是enum Code,只能使用数字作为字段编号。
我试图像这个动物例子一样构建多态消息定义,其中在enum Type中定义了Cat = 1;,并且将required Cat animal = 100;作为唯一的扩展号码。
我认为这样做很好。
message Message {
  required string foo = FOO.value;
}

我想确保扩展字段编号的唯一性,而不引入另一个神奇数字。因此问题是:在protocol buffer语言中是否可以引用枚举类型的整数值?


据我所知,简单来说就是"不"。 - Marc Gravell
1个回答

3

很抱歉,没有办法做到这一点。

顺便说一下,同一枚举类型的两个枚举值实际上可以具有相同的数字值,因此在枚举中定义这些值并不能确保唯一性。


感谢澄清! - lyomi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接