問題タブ [binaryformatter]

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

.net - 異なるアセンブリ バージョンでのバイナリ デシリアライズ

BinaryFormatter を使用して構造体のコレクションを文字列とブール値でシリアル化するプロジェクトがありますか? データ型。

シリアライゼーション/デシリアライゼーションは正常に機能しますが、作業を行うアセンブリを変更すると、バイナリ ファイルのヘッダーがデータを処理するAssembly x代わりに必要であることを示しているため、デシリアライズに失敗しAssembly yます。

シリアライゼーション/デシリアライゼーションをアセンブリに依存しないようにセットアップすることは可能ですか?

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

c# - バイトシリアル化

最近、ネットワークを介したバイトデータのシリアル化について同僚と話し合いました。彼はBinaryFormatterクラスを使用して、私が彼に送信していたバイトデータを「解析解除」しました。これは機能せず、彼には明らかに例外的な...例外がありました。Binaryformatter私のデータは単なるバイト配列であったため、データを正しく「解析解除」できませんでした。

彼の動機BinaryFormatterはプラットフォームの独立でした。私はそのようなスタンスに納得していません。私たちが両方を使用したとき、BinaryReaderまたはBinaryWriter、コードランドでは物事はうまくいきました。

したがって、どのような用途があり、BinaryFormatterネットワークを介してバイトを送信する必要がある場合は、各シナリオでそれを使用することを検討する必要がありますか?

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

c# - オブジェクトをシリアル化するときにイベント サブスクライバーを無視するにはどうすればよいですか?

次のクラスが でシリアル化されるとBinaryFormatter、イベントをサブスクライブするすべてのオブジェクトRoarもシリアル化されます。これは、これらのオブジェクトへの参照が EventHandler デリゲートによって保持されるためです。

Lion で始まるオブジェクト グラフの一部としてイベント サブスクライバーがシリアル化されるのをどのように停止しますか?

[NonSerializable]属性を配置するeventと、コンパイルされません。


注:サイトに情報があると役立つと思うので、私は自分の質問に答えています!

FAQ: 自分で質問して答えるのもまったく問題ありませんが、Jeopardy に参加しているふりをして、質問の形で表現してください。

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

c# - BinaryFormatter は圧縮を適用しますか?

.NETBinaryFormatterを使用してオブジェクト グラフをシリアル化する場合、何らかの圧縮が適用されますか?

オブジェクトグラフに多くの文字列と整数が繰り返されることを心配する必要があるかどうかという文脈で尋ねます。

編集- ちょっと待ってください。文字列が .NET にインターンされている場合、文字列の繰り返しについて心配する必要はありませんよね?

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

c# - C# でのシリアル化で立ち往生

Serializer と呼ばれる、C# でシリアル化を処理するクラスがあります。その実装は次のとおりです。

非常に簡単なもので、すべての単体テストで問題なく動作します。RulesManager は正しくシリアライズおよびデシリアライズされているため、グラフが適切であることがわかります。

問題は次のコードで発生します。

その関数は Manager クラスの一部です。Manager クラスは MainForm でインスタンス化されます。MainForm は SaveFileDialog を使用して、保存先のファイル名と場所をユーザーに要求し、次の呼び出しを行います。

したがって、上記の関数を呼び出します。そうすると、Serialize.SerializeRulesManager の binaryFormatter.Serialize(stream, rulesManager) 行で次の例外が発生します。

アセンブリ 'TestHarness, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' のタイプ 'TestHarness.MainForm' は、シリアル化可能としてマークされていません。

MainForm をシリアライズ可能としてマークする必要があるのはなぜですか? 念のため、MainForm に Serializable 属性を設定し、例外を 1 つ上のレベルに移動して、Windows.Form が Serializable としてマークされていないことを示しました。何を与える?

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

c# - How to deserialize or recover a binary serialized dictionary that's not finished serializing?

When I used my app, on close, it tried to serialize a dictionary that's 300 KB. Because of no disk space, it could only write 292 KB. Is there a way to successfully deserialize whatever is in there?

I used BinaryFormatter and if I lose some elements that's way better than losing the whole dictionary.

When I deserialize I get this exception:

0 投票する
4 に答える
2108 参照

c# - C#でBinaryFormatterを使用して逆シリアル化の順序を変更するにはどうすればよいですか?

classBを含むclassAがあり、両方とも[Serializable]であるとします。

デシリアライズでは、classBが最初にデシリアライズされると思いました。

ただし、これは当てはまりません。各[OnDeserialized]メソッドがヒットしたときにログに記録するだけで確認できたからです。

今、私は次の問題を抱えています:

classAの逆シリアル化が完了すると、classBの値を使用してそれ自体をセットアップすることになっています。残念ながら、この時点ではclassBはまだ逆シリアル化されていないため、classAの設定が間違っています。

BinaryFormatterにclassAの前にclassBを逆シリアル化するように強制するか、オブジェクトグラフを上から下ではなく下から上に解決できれば、私の問題は解決します。

もう1つの明らかな解決策は、クラスBが逆シリアル化されたときにイベントを発生させてから、classAをセットアップすることですが、このエレガントでない回避策は避けたいと思います。

ですから、誰かがより良い解決策を知っていれば幸いです。

0 投票する
3 に答える
14122 参照

.net - BinaryFormatter の代替

BinaryFormatter でシリアル化された 128³ double の配列は、50 MB のスペースを占有します。2 つのdoubleフィールドを持つ128³のstructの配列をシリアル化すると、150 MB が必要になり、処理に 20 秒以上かかります。

コンパクトなファイルを生成する高速でシンプルな代替手段はありますか? 私の予想では、上記の例はそれぞれ 16 MB と 32 MB を消費し、処理に 2 秒もかかりません。protobuf-net を見てみましたが、構造体配列すらサポートしていないようです。

PS: ファイル サイズの記録に誤りがありましたことをお詫び申し上げます。BinaryFormatter による実際のスペースのオーバーヘッドは大きくありません。

0 投票する
6 に答える
76488 参照

c# - C# オブジェクトのバイナリ シリアル化

オブジェクトとその結果をバイナリでシリアル化し、データベースに保存したいと考えています。

データベースに保存するためにメモリストリームを文字列型に変換し、その後オブジェクトを逆シリアル化できるようにするにはどうすればよいですか?