【发布时间】:2012-07-23 13:25:25
【问题描述】:
我有一个用 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) 一旦有了 proto 定义,我就可以运行 Google 代码来生成我的类,这需要一些额外的代码来处理非标准的东西。没什么大不了的。
我目前唯一的问题是字典/地图的格式。它们看起来像这样:
repeated Pair_Decimal_Int32 MyDict = 1
我需要知道的是这种特殊类型是如何定义的。它当然与泛型相关联(取决于字典),所以也许有特殊的代码可以生成它?我不太清楚它在 protobuf-net 中的哪个位置处理这个问题,所以我正在寻求帮助。
【问题讨论】:
-
我猜
Pair_Decimal_Int32只是一个包含两个字段(double和int32?)的简单消息,我猜它们被命名为“第一”和“第二” ”。协议缓冲区中没有通用的东西,在将消息处理到字典中时必须处理它。 -
好吧,我想 Decimal 是 bcl.Decimal 而 Int32 是映射到的任何内容。说得通。为什么显而易见的事情会这样盯着我?
标签: c++ .net protocol-buffers protobuf-net