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

标签 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;
}

,这样我就可以在不引入另一个魔数(Magic Number)的情况下确保扩展字段号的唯一性。

所以问题是:是否可以在 Protocol Buffer 语言中引用枚举的整数值?

最佳答案

不,没有办法做到这一点。对不起。

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

关于enums - 使用 protobuf 枚举值作为字段编号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22447776/

相关文章:

c# - 如何使用旧代码读取扩展.proto 文件(textformat.merge)?

c - Objective-C/C 给出枚举默认值

JAVA字符串转换成对应的枚举?

protocol-buffers - 如何在 ProtoBuf 中返回一个简单的 bool 值?

apache-spark - 如何将行映射到 protobuf 生成的类?

c++ - 将多个 protobuf 编码到文件

c# - 我应该在 C# 中使用 Enum 类还是 Lookup

c# - 使属性只能通过特定方法设置

c# - 如何将枚举从 View 传递到模型 ASP.Net MVC

java - 编辑从数据库中读取的数百个 Protocol Buffer 序列化消息