【发布时间】:2011-12-08 04:55:04
【问题描述】:
我使用 protobuf-net 和 ProtoGen.exe 来解析以下 .proto 文件(由另一个项目提供)
enum RGBFlags { FLAG_RED = 1; FLAG_GREEN = 2; FLAG_BLUE = 4; }
message SomeMessage {
// Values from RGBFlags only allowed
optional int32 flags = 2;
}
我的 C++ 程序员同事并不关心类型安全,而是将 flags 字段视为纯整数。我想更严格,尽量避免这样的代码:
SomeMessage foo = new SomeMessage();
foo.flags = (int)RGBFlags.FLAG_BLUE | (int)RGBFlags.FLAG_GREEN;
我认为我可以使用protbuf custom options 来修改原始代码并修改ProtoGet 的XSLT transform 以生成必要的`[Flags]' 注释。
extend google.protobuf.EnumOptions {
optional bool generate_bit_field = 60000;
}
enum RGBFlags {
option (generate_bit_field) = true;
FLAG_RED = 1; FLAG_GREEN = 2; FLAG_BLUE = 4;
}
message SomeMessage {
// Values from RGBFlags only allowed
optional int32 flags = 2;
}
问题是所有自定义选项在ProtoGen 的临时文件中显示为uninterpreted_option。
知道我可以做些什么来在我的代码中获得[Flags] 注释吗?
【问题讨论】:
标签: code-generation protocol-buffers protobuf-net