2

通信にprotobuf-netライブラリを使用するc#で記述された大規模なソリューションがあります。私は既存のコードと通信するためのc++プログラムを作成しようとしていますが、その方法をほぼ理解できるようになっています。

計画は次のとおりです。

1)すべてがc#で開始されたため、.protoファイルはありません。ただし、既存のメッセージクラス(GetProto)から.protoをキャプチャするコードを簡単に記述できます。

2)一部のタイプは非標準です。つまり、他のタイプで定義されています。たとえば、bcl.DateTimeやbcl.Decimalなどです。このリンクを使用して、定義を見つけることができました:Protobuf-net-.NETGUIDのシリアル化-C++でこれを読み取る方法は?

3)プロト定義を取得したら、Googleコードを実行してクラスを生成できます。これには、非標準的なものを処理するための追加のコードが必要になります。大したことではありません。

現時点での私の唯一の問題は、辞書/地図の形式です。彼らはこのように見えます:

repeated Pair_Decimal_Int32 MyDict = 1

私が知る必要があるのは、この特別なタイプがどのように定義されているかです。もちろんジェネリックスにリンクされているので(辞書によって異なります)、それを生成する特別なコードがあるのではないでしょうか。protobuf-netのどこでこれを処理しているのかよくわからないので、助けを求めています。

4

1 に答える 1

1

v2 の GetProto は非常に新しく実装されたものであり (数日前のように)、荒削りなエッジがある可能性があることに注意してください (そのようにマークされています)。

日時については、相互運用のために、より単純なタイプとして公開することを検討することをお勧めします。辞書は、単にキー (フィールド 1) / 値 (フィールド 2) を繰り返したものです。10 進数も、生の protobuf ではうまく表現できません。可能であれば、long (固定値でスケーリング) または double、IMO を使用します。

于 2012-07-23T13:57:40.653 に答える