ProtoEnum属性用于重命名冲突的默认值

问题描述

我正在尝试从大型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 (将#修改为@)