問題タブ [protobuf-net]

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 投票する
3 に答える
10466 参照

c# - protobuf-net: 空のリストのシリアル化

空のリストのシリアル化にはいくつかの問題があります。CF 2.0 を使用した .NET のコード

ストリームに書き込もうとすると例外が発生しました (bytes.length が範囲外)。しかし、空の List を持つ型は 0 バイトであってはなりませんよね (型情報?)?

応答にはクライアントへのサーバーからのメッセージがあるため、このタイプの送信が必要です。

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

c# - protobuf-net が 0 をデシリアライズしない

C# で protobuf-net r278 を使用していますが、intフィールドを持つクラスがある場合、値が 0 に設定されているとフィールドが適切に逆シリアル化されないことに気付きました。つまり、逆シリアル化すると、デフォルト値が取得されます。クラス定義。クラスの例:

次に、次のコードを実行します。

これを行うと、0 ではなくとdeserがあります。ここで何か間違ったことをしていますか?Field1 = -1Field2 = 2

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

c# - protobuf-net - C++ 側での逆シリアル化の問題 :(

.NET アプリケーションで ProtoBuf-Net を使用して、以下をシリアル化しています: (.proto 形式)

私の目的は、これをシリアル化し、単一のサンプルとして ASF ファイルに挿入することです。

私はこれをシリアライズするために呼び出します:

次に、ms オブジェクトからバイト配列を取得します。

このバイト配列を ASF に入れます。大きな問題は、ASF サンプルを正常に読み取る C++ アプリにあります。逆シリアル化しようとすると、メモリ アクセス違反が発生します :(

これは私のC++コードです:

(ここで、m_screenBuffer は ProtoScreenBuffer、serBuffer は ASF ファイルから取得した生のバイト配列、dwInputDataLen はその長さです。)

私がやろうとしていることに対して、ここで間違っていることはありますか (C# .NET でシリアル化し、C++ で逆シリアル化しますか?)

どうもありがとう。

ローイ

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

c# - protobuf-net を使用して現在のストリーム位置で型を逆シリアル化する

複数のオブジェクトを単一のストリームにシリアル化していますが、それらを読み戻そうとすると、最後のオブジェクト以外は何も取得できないようです:

最初のデシリアライズはストリームを最後に移動し、postA2 には postB1 の値が含まれますが、postB2 は初期化されていないインスタンスです。これは予期された動作ですか? また、そうであれば、ストリーム内のランダムな位置からオブジェクトをどのように逆シリアル化しますか?

0 投票する
2 に答える
368 参照

c# - 共有クラスでの WCF エラー サービス エラー メッセージ

ソースコード: http://code.google.com/p/sevenupdate/source/browse/#hg/Source/SevenUpdate.Base

SevenUpdate.Base.Sui はインポートした DataContract と一致しないため使用できません。参照される型からこの型を除外する必要があります。

ここで、再利用参照型のチェックを外してみましたが、プロジェクトをコンパイルすることができました。しかし、クライアントからコレクションを送信すると、サーバー側で受信されなかったか、逆シリアル化できませんでした。

私は本当にこれが機能する必要があります。助けていただければ幸いです。完全なソース コードは Google コードによって提供されます。

0 投票する
5 に答える
24106 参照

c# - protobuf-csharp-port と protobuf-net のどちらを選択するか

私は最近、もともと Google が開発した Protocol Buffers ライブラリの C# 移植を探す必要がありました。なんと、ここで 2 つの非常に有名な人物が所有する 2 つのプロジェクトを見つけました。Jon Skeetが作成したprotobuf-csharp-portと、 Marc Gravellが作成したprotobuf-netです。私の質問は簡単です。どちらを選択する必要がありますか?

Marc のソリューションは、C# の哲学に近いように思え (たとえば、既存のクラスのプロパティに属性を追加するだけでよい)、System.Guid などの .NET 組み込み型をサポートできるように見えるので、非常に気に入っています。

どちらも本当に素晴らしいプロジェクトだと思いますが、どう思いますか?

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

c# - protobuf-net - バックティック、辞書、.proto ファイル

http://code.google.com/p/metasyntactic/wiki/ProtocolBuffersを使用して、iphone から protobuf-net を使用する C# プログラムと通信しようとしています。

残念ながら、私が受け取った (C# ソース コードから生成された) .proto ファイルには、protoc が拒否している行が含まれています。

これは、ソース データが C# ディクショナリであり、値として Guid キーとクラスがあるためと思われます。これにうまく対処する方法はありますか?

使用されている protobuf-net のバージョンは r278.zip です。

(これらの protobuf の送受信はすべて正常に動作します。これが問題になるのは、iPhone をミックスに追加したときだけです。)

更新: マークのおかげですべてが機能するようになりました!

C# 側のオブジェクトは次のようになりました。

.proto で次を使用して正常に機能しました。

問題のメッセージには次が含まれます。

0 投票する
2 に答える
980 参照

protobuf-net - protobuf-netで生成されたバイナリはGoogleの仕様と互換性がありますか

実際、GoogleのJava実装を使用してデータをシリアル化し、次にC#実装を使用して逆シリアル化したいですか?
より安定しているように見えるので、私はprotobuf-netを選択しました(proto#はまだv0.9であるか、私はそれを選択したでしょう)。作業を開始する前に、これを実現できることを確認したかった(Java実装を使用してデータをシリアル化し、protobuf-netを使用してデータを逆シリアル化する)。または、protobuf-netの実装に固有のメソッドのリストはありますか?

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

c# - protobuf-net:Guidプロパティを逆シリアル化する誤ったワイヤタイプの例外

protobuf-netを使用してORMで生成されたエンティティの特定のGuidプロパティを逆シリアル化する際に問題が発生します。

コードの簡略化された例を次に示します(シナリオのほとんどの要素を再現しますが、動作は再現しません。内部エンティティを公開できないため、例外を説明するための手がかりを探しています)。読み取り専用のGUIDと読み取り/書き込み文字列をAccount持つクラスがあるとします。クローンをシリアル化し、すぐに逆シリアル化します。AccountIDAccountName

Incorrect wire-type deserializing Guidデシリアライズは、デシリアライズ中に例外をスローします。

使用例を次に示します...

そして、これがORMされたクラスの例です(簡略化されていますが、私が考えることができる関連するセマンティクスを示しています)。シェルゲームを使用して、バッキングフィールドを公開することにより、読み取り専用プロパティを逆シリアル化します(「書き込み不可」は基本的に「書き込み不可」になりますが、これらのフィールドに割り当てるインスタンスのコードをスキャンできるため、ハックは目的)。

繰り返しますが、これは例外の動作を再現しません。私は何ができるかについての手がかりを探しています:

XML、JSON、およびDataContractシリアライザーはすべて、これらのオブジェクトグラフを正常にシリアル化/逆シリアル化するように見えるため、属性の配置は基本的に機能します。リストと単一インスタンス、異なるプレフィックススタイルなどを使用してprotobuf-netを試しましたが、逆シリアル化すると常に「不正なワイヤタイプ...GUID」例外が発生します。

したがって、具体的な質問は、これに関する既知の説明/回避策はありますか?(実際のコードでは、例ではなく)どのような状況が原因であるかを追跡しようとすると途方に暮れます。

エンティティ層に直接protobuf依存関係を作成する必要がないことを望んでいます。その場合は、protobuf属性を持つすべてのパブリックプロパティを使用してプロキシDTOエンティティを作成する可能性があります。(これは私がすべての宣言型シリアル化モデルで抱えている主観的な問題です。これはユビキタスなパターンであり、なぜそれが発生したのかは理解していますが、IMOは、人を月に乗せることができれば、「通常」はオブジェクトとシリアル化契約を持つ必要があります分離。;-))

ありがとう!

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

protobuf-net - カスタム ツール エラー: Command.proto:11:18: "Message2" が定義されていません

VS2008 と統合された最新バージョンの protobuf-net を使用しています。2 つのメッセージ (Message1 と Message2) を作成しました。1 つのメッセージは 1 つの proto ファイルに含まれています。Message1 で Message2 を参照しようとすると、コード ジェネレーター ツールで "Message2" is not defined というエラーが表示され、コード ファイルが生成されません。両方のメッセージのパッケージは同じです。
ツールが VS2008 と統合されているため、同じ .proto ファイル内のすべてのメッセージがコンパイルされることを期待しているようです。現在、次のように、Message1.proto ファイルに同じ名前の空のメッセージを貼り付ける必要があります。

そして後でclass Message2fromの宣言を削除しMessage1.csます。このエラーを回避するために必要な設定はありますか、それとも空の宣言を提供する唯一の方法ですか? または、そうでない場合は、「extern」などのキーワードを含めて、この型の定義が別のクラスで利用可能であることをコンパイラに伝えることをお勧めします (Marc Gravell)。