問題タブ [protobuf-csharp-port]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
4274 参照

c# - c++ の Google protobuf SerializeToString 関数と c# の WriteTo 関数

c# と c++ の両方で Google protobuf を使用したいです。protobuf-csharp-port を使用して、c# でコードを生成しました。c++ と c# の protobuf コードは、同じ .proto ファイルから生成され、同じオブジェクトに同じオブジェクトを設定しました。価値。

C++ コード:

c# コード:

オブジェクトを文字列にシリアル化したいので、C++ で SerializeToString 関数を使用し、c# で WriteTo 関数を使用しました。

C++ コード:

c# コード:

ただし、C++ の strBody の結果は c# の場合と同じではありません。理由と方法を教えてください。 C++ 値:

c#値:

0 投票する
1 に答える
443 参照

c# - 古いバージョンの Google Protobuf を使用してオブジェクトを作成する

私はもともと Google Protobuf 3.1 プロトコル コンパイラを使用して Filepath.cs クラスを自動生成していました。filepath.proto ファイルは proto2 構文用に記述されているため、proto3 に準拠するようにファイルを手動で変更する必要がありました。

どうしようもない理由で、proto2 構文に固執する必要があることがわかりました。protoc バージョン 3.0.0alpha3 が proto2 ファイルの C# コード生成をサポートしていることがわかりました (新しい protoc バージョンは proto2 ファイルの C# コード生成をサポートしていないため、alpha 3 に戻しました)。

生成されたコードは異なり、私の既存のコード (もともと protoc 3.1 で動作していたが、動作しなくなりました):

このコードのチャンクは、alpha3 で生成されたファイルでは機能しなくなりました。古いバージョンの Protobuf を使用してオブジェクトを適切にシリアル化/逆シリアル化する方法を知っている人はいますか?古いチュートリアルがどこかにアーカイブされているかどうかは?

私はできる:

フィールドPathとにTestValueはゲッターのみがあり、セッターはありません。