比如如下定义
syntax = "proto3";
option csharp_namespace = "Demo";
option java_package = "Demo";
package Demo;
enum Scenario {
scenario_unknow=0;
type1=1;
scenario2=2;
}
enum Color {
COLOR_RED = 0;
COLOR_GREEN = 1;
COLOR_BLUE = 2;
}
生成的 C#代码
#region Enums
public enum Scenario {
[pbr::OriginalName("scenario_unknow")] Unknow = 0,
[pbr::OriginalName("type1")] Type1 = 1,
[pbr::OriginalName("scenario2")] _2 = 2,
}
public enum Color {
[pbr::OriginalName("COLOR_RED")] Red = 0,
[pbr::OriginalName("COLOR_GREEN")] Green = 1,
[pbr::OriginalName("COLOR_BLUE")] Blue = 2,
}
#endregion
java 代码
public enum Scenario
implements com.google.protobuf.ProtocolMessageEnum {
/**
* <code>scenario_unknow = 0;</code>
*/
scenario_unknow(0),
/**
* <code>type1 = 1;</code>
*/
type1(1),
/**
* <code>scenario2 = 2;</code>
*/
scenario2(2),
UNRECOGNIZED(-1),
;
}
public enum Color
implements com.google.protobuf.ProtocolMessageEnum {
/**
* <code>COLOR_RED = 0;</code>
*/
COLOR_RED(0),
/**
* <code>COLOR_GREEN = 1;</code>
*/
COLOR_GREEN(1),
/**
* <code>COLOR_BLUE = 2;</code>
*/
COLOR_BLUE(2),
UNRECOGNIZED(-1),
;
}
可以看到生成后的枚举成员中自动将枚举名称替换成空白了.这导致 Scenario.scenario2
生成的代码中成员名为 _2
也许这多半是by design
的,但是,是否有选项可以控制这种行为?
谢谢
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.