C# protobuf net into.proto生成枚举冲突?
在C#中,我们在proto中有名称空间。我们从protobuf net获得的proto中没有任何名称空间。因此,问题是如何使protobuf net生成(并在内部使用).proto文件和namespacs/packages 当我们解析了所有的项目,使Proto文件连接C++应用程序到我们的C应用程序时,我们得到了大量的C# protobuf net into.proto生成枚举冲突?,c#,c++,.net,protocol-buffers,protobuf-net,C#,C++,.net,Protocol Buffers,Protobuf Net,在C#中,我们在proto中有名称空间。我们从protobuf net获得的proto中没有任何名称空间。因此,问题是如何使protobuf net生成(并在内部使用).proto文件和namespacs/packages 当我们解析了所有的项目,使Proto文件连接C++应用程序到我们的C应用程序时,我们得到了大量的 enum AnimationCode { None = 0; Idle = 1; //... } 及 所以当我们把这个统一的project.proto文件交给
enum AnimationCode {
None = 0;
Idle = 1;
//...
}
及
所以当我们把这个统一的project.proto文件交给protogen编译器时,我们得到了大量的数据
enum AnimationCode {
None = 0;
Idle = 1;
//...
}
枚举类型“SessionStateCode”没有名为“None”的值
及
注意枚举值使用C++范围规则,意味着枚举值 是他们类型的兄弟姐妹,而不是孩子
和没有C++代码。< /P> 重点是使编码的C#消息至少可以从C++中读取。
您尝试过这个吗package MyNamespace{
enum AnimationCode {
None = 0;
Idle = 1;
//...
}
}
protobuf net中目前没有任何代码来执行自动名称冲突修复,尽管我很想知道您是否有任何建议。另一种选择是:
enum AnimationCode {
[ProtoEnum(Name="AnimationCode_None")]
None = 0,
Idle = 1
}
这里,.proto在生成scema时将使用AnimationCode\u None
;事实上,它将是:
enum AnimationCode {
AnimationCode_None = 0;
Idle = 1;
}
我已经检查了
元类型
/ValueMember
API,目前似乎很难在运行时设置.Name
,但在新版本中可以很容易地解决这个问题(如使用)如果您更喜欢在运行时设置它们,而不是用属性修饰它们。问题是-我们有大量的代码,这实际上不会阻止C对读取此类消息的支持吗?点是从C++中获取PROTO文件,它将与C++谷歌原型Bufff兼容。因此,编码的C#消息至少可以从C++中读取,因此会出现问题-默认值等。是否会对此错误进行正式修复?@myWall-您有什么建议?自动命名EnumName\u EnumField
for.protogeneration@myWallJSON我当然可以选择-我不认为我应该改变默认值,苏格拉威尔:炉排!)我们会很快在任何地方看到它吗?protobuf网络库是否计划在近期内进行任何更改?