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

时间:2014-03-17 05:50:29

标签: enums protocol-buffers

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

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

message Message {
  required string foo = FOO;
}

此代码不起作用,因为FOO的类型为enum Code,只有一个数字可用作字段编号。

我正在尝试构建像animal example这样的多态消息定义,它定义Cat = 1;中的enum Typerequired Cat animal = 100;作为唯一的分机号。

我认为这样做很好

message Message {
  required string foo = FOO.value;
}

,这样我就可以确保扩展字段编号的唯一性,而不会引入另一个幻数。

所以问题是:是否可以在协议缓冲区语言中引用枚举的整数值?

1 个答案:

答案 0 :(得分:3)

不,没有办法做到这一点。遗憾。

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