在使用protobuf.net在线生成器进行了几次试用之后,我怀疑您从.proto文件中获取更相关的.cs文件的方式。
输入原始文件是下面链接中的sparkplub_b文件: https://github.com/Cirrus-Link/Sparkplug/blob/master/sparkplug_b/sparkplug_b.proto
在Sparkplug文档中,数据类型枚举的字符串形式为“ Uint64”,在结果.cs文件中,我们具有“ LongValue”。
(我还必须对.cs文件进行一些更改,以便能够在对象实例的JSON序列化中将枚举与“ DataType”一起使用)
谢谢。
"Timestamp": 1538568112852,
"Metrics": [
{
"Name": "bdSeq",
"Timestamp": 1538568112852,
"Datatype": 4,
"IsNull": false,
"Metadata": null,
"Properties": null,
"LongValue": 0,
"ValueCase": 11
}
],
"Seq": 18446744073709551615
}
答案 0 :(得分:0)
对不起,我要请假。我是protobuf-net的作者。
使用protobuf.net从给定的.proto文件中获取.cs文件的最佳方法是什么
最终,对于protobuf-net来说:protogen
-https://protogen.marcgravell.com/的用途(我想这就是您所说的“与protobuf.net在线生成器一起使用”的意思)>
在Sparkplug文档中,数据类型枚举的字符串形式为“ Uint64”,在结果.cs文件中,我们具有“ LongValue”。
我认为这是来自:
uint64 long_value = 4;
如果关注的是命名(LongValue
与long_value
),则请注意protobuf-net具有允许对此进行更多控制的选项; LongValue
只是默认约定。
但是:这不是枚举-sparkplug_b.proto
中没有枚举。如果您可以更详细地了解想要 作为生成的代码(理想情况下为什么),我肯定可以提供更多帮助。
(编辑:是个enum
,可以选择从oneof
生成)