问题描述
我正在尝试从大型c#.net代码库生成c ++ protobuf类。在整个许多枚举声明中,枚举“ NotSet”被用作默认值,因此我使用ProtoEnum属性为发生冲突的导出提供不同的名称。但是我发现,在我导出的.proto文件具有包含这些枚举之一作为成员的类的地方,其默认值仍使用原始名称,然后protoc无法生成未经更正的C ++文件。
使用以下示例,
[DataContract]
[ProtoContract]
public enum MyEnum
{
[EnumMember]
[ProtoEnum(Name = "MyEnum_NotSet",Value=0)]
NotSet,SomeValue,AndSoOn
}
在我需要导出的课程中,枚举显示为我要导出的成员。
[ProtoContract]
public class MyClass
{
[DataMember]
[ProtoMember(1)]
private MyEnum m_myEnum;
}
但是在导出的.proto文件中,此类最终以原始枚举名称作为默认值...
syntax = "proto2";
enum MyEnum {
MyEnum_NotSet = 0;
SomeValue= 1;
AndSoOn= 2;
}
message MyClass{
optional MyEnum m_myEnum= 1 [default = NotSet];
}
使用协议从中生成c ++文件失败-枚举类型“ MyEnum”没有名为“ NotSet”的值。
这里缺少我一些步骤吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)