使用protobuf.net从给定的.proto文件中获取.cs文件的最佳方法是什么

时间:2018-10-10 14:10:36

标签: json.net protocol-buffers protobuf-net

在使用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
}

1 个答案:

答案 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;

如果关注的是命名LongValuelong_value),则请注意protobuf-net具有允许对此进行更多控制的选项; LongValue只是默认约定。

但是:这不是枚举-sparkplug_b.proto中没有枚举。如果您可以更详细地了解想要 作为生成的代码(理想情况下为什么),我肯定可以提供更多帮助。

(编辑:enum,可以选择从oneof生成)