myW*_*SON 7 .net c# c++ protocol-buffers protobuf-net
在C#中,我们在.proto中有命名空间,我们从protobuf-net获得,我们没有得到任何命名空间.所以问题是如何使用namespacs/packages生成protobuf-net生成(并使用内部).proto文件.
我们解析所有项目以生成.proto文件以将C++应用程序连接到我们的C#应用程序时的示例
enum AnimationCode {
None = 0;
Idle = 1;
//...
}
Run Code Online (Sandbox Code Playgroud)
和
enum SessionCode {
None = 0;
//...
}
Run Code Online (Sandbox Code Playgroud)
因此,当我们将该统一项目.proto文件提供给protogen编译器时,我们得到了大量的
枚举类型"SessionStateCode"没有名为"None"的值.
和
请注意,枚举值使用C++作用域规则,这意味着枚举值是其类型的兄弟,而不是它的子级.
而且没有C++代码.
要点是这样,编码的C#消息至少可以从C++中读取
目前 protobuf-net 中没有任何代码来执行自动名称冲突修复,尽管我很想知道您是否有任何建议。另一种选择是:
enum AnimationCode {
[ProtoEnum(Name="AnimationCode_None")]
None = 0,
Idle = 1
}
Run Code Online (Sandbox Code Playgroud)
这里,.proto 将AnimationCode_None在生成 scema 时使用;事实上,它将是:
enum AnimationCode {
AnimationCode_None = 0;
Idle = 1;
}
Run Code Online (Sandbox Code Playgroud)
我已经检查了MetaType/ APIValueMember,看起来目前很难.Name在运行时设置,但是如果您希望将它们设置为运行时而不是用属性来装饰。MetaType
| 归档时间: |
|
| 查看次数: |
3585 次 |
| 最近记录: |