我有一个用 c# 编写的大型解决方案,它使用 protobuf-net 库进行通信。我正在寻找编写一个 c++ 程序来与现有代码对话,并且我已经接近能够看到如何做到这一点。
这是计划:
1) 由于一切都是在 c# 中启动的,因此没有 .proto 文件。但是,我可以轻松编写一些从现有消息类 (GetProto) 中捕获 .proto 的代码。
2) 一些类型是非标准的,即它们是根据其他类型定义的:例如,bcl.DateTime 和 bcl.Decimal。使用此链接,我能够找到定义:Protobuf-net - serializing .NET GUID - how to read this in C++?
3)一旦我有了原型定义,我就可以运行谷歌代码来生成我的类,这需要一些额外的代码来处理非标准的东西。没有大碍。
我目前唯一的问题是字典/地图的格式。它们看起来像这样:
repeated Pair_Decimal_Int32 MyDict = 1
我需要知道的是这种特殊类型是如何定义的。它当然与泛型相关联(取决于字典),所以也许有特殊的代码可以生成它?我不太清楚它在 protobuf-net 中的哪个位置处理这个问题,所以我正在寻求帮助。