問題タブ [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.
c# - BinaryFormatter を使用してシリアル化されたデータを逆シリアル化する際の例外
と を使用してBinaryFormatter
オブジェクトMemoryStream
をシリアル化し、バイナリ BLOB としてデータベースに格納しています。次に、データベースからデータを取得し、binaryformatter とメモリ ストリームを使用して逆シリアル化します。
ただし、オブジェクトを逆シリアル化しようとすると、例外がスローされることがよくあります。最も注目すべきは'an object with the same key already exists'
、または'cannot convert string to int64'
デシリアライズが失敗する理由について誰かが考えを持っていますか? または、どの辞書オブジェクトに問題があるかを調べる方法はありますか?
私のシリアル化機能は次のとおりです...
UserData クラスは少しモンスターですが、[serializable] とマークされており、そのオブジェクト ツリー内のすべてのクラスも [serializable] とマークされています。このクラスの一部は次のとおりです。
c# - オブジェクトを byte[] に変換する
object
取得したレジストリ値を からに変換しようとしていますbyte[]
。として保存されREG_BINARY
ます。で使っBinaryFormatter
てみましたMemoryStream
。ただし、不要なオーバーヘッド情報が追加されます。関数を実行してバイト配列を文字列に変換したときに、これを観察しましたConvert.ToBase64String(..)
。これらの機能を実行しているのは、暗号化されたキーのレジストリへの保存と取得をテストしているためです。
binaryformatter - シリアル化例外
例外「解析が完了する前にストリームの終わりが検出されました」とは 私のコードで?
c# - DataContractSerializerとBinaryFormatterのパフォーマンス
datacontractserializerとbinaryformatterシリアライザーについてもっと理解するために記事を読んでいました。これまでに行った読み取りに基づいて、binaryformatterはdatacontractserializerよりもフットプリントが小さいはずだという印象を受けました。DataContractSerializerである理由はxmlinfosetにシリアル化され、binaryformatterは独自のバイナリ形式にシリアル化されます。
以下はテストです
DataSetにはテーブルの121317
行が入力されました[AdventureWorks].[Sales].[SalesOrderDetail]
質問 binaryformatterのバイト数がdatacontractserializerよりも多いのはなぜですか?それははるかに少ないべきではありませんか?
c# - シリアル化されたオブジェクトをネット経由で送信するにはどうすればよいですか?
チャットを構築しようとしています!私の目標は、ユーザーからの入力を受け取り (クラス内の関数に渡されます)、それを保存し、オブジェクトをネット経由でユーザーに送信することです。
これまでの私のコードは次のとおりです。
すべてを binaryFormatter に保存しましたが、それをユーザーに送信して受信するにはどうすればよいですか?
クライアント側のコード:
c# - BinaryFormatter および Deserialization Complex オブジェクト
次のオブジェクト グラフをデシリアライズできません。その例外は、BinaryFormmater: System.Runtime.Serialization.SerializationException で呼び出された deserialize メソッドで発生します。
C.には2つのコンストラクターがあり、問題は次のようになると思います:パラメーター付きのものと逆シリアル化プロセスを使用するシリアライゼーション Binaryformatter では、パラメーターなしのコンストラクターが必要です。ハック/解決策はありますか? オブジェクト:
// シリアライズ成功
// デシリアライズ失敗
呼び出しは同じ環境、同じスレッド、同じメソッドにあります
c# - C# の数千のレコードを含むバイナリ ファイル形式
配列モデル オブジェクトをバイナリ ストリームにシリアル化したいと考えています。モデル クラスには、主に文字列と整数のプロパティがあります。
クラスを [Serializable] としてマークし、バイナリ フォーマッタを使用できると思いますが、転送用のファイルをできるだけ小さくすることが優先事項であることを念頭に置いて、これが最善の方法であると思われるかどうかを知りたいと思います。低帯域幅接続を介して(ファイルも圧縮/解凍できます)。
ファイルには数千のレコードが含まれる可能性があるため、理想的には、ファイル全体を一度にメモリに保持することなく、ディスクに追加してレコードごとにディスクから読み取ることができるようにしたいと考えています。
したがって、私の優先事項は次のとおりです。小さなファイルサイズと効率的なメモリ使用。
おそらく、これには事前に作成されたフレームワークがありますか?XMLやCSVファイルで簡単にできそう!うまくいけば、それもカスタムバイナリ形式です。
ありがとう
c# - Deserialize() を使用した C# ProgressBar
シリアル化したいくつかの大きなオブジェクト グラフがあり、それらのいくつかは逆シリアル化に少し時間がかかります。
この段階では、表示されて完了時に消える小さな「お待ちください...」ボックスに非常に満足していますが、逆シリアル化が開始された場合に何らかの進行状況バーを表示するというアイデアをいじっていました。より長いです。
オブジェクトの組み込みDeserialize()
メソッドの進行状況を取得する方法がないようです。BinaryFormatter
そのような機能が含まれていたとしたら、ストリームからバイトのブロックが読み取られるたびにポーリングする非同期コールバックのようなものがあると思います。
オブジェクトのシリアル化/逆シリアル化を使用した ProgressBar のような動作の実装を見た人はいますか?
.net - BinaryFormatter *PERFORMANCE*の問題によるシリアル化
バックグラウンド:
約60MBのファイルにシリアル化される(そして時間の経過とともに大きくなる)LARGEオブジェクトグラフで立ち往生しています。問題はファイルサイズではなく、書き込みと読み取りの時間であり、一部のマシンでは最大4分かかります。
プロット:
これはある種のインメモリデータベースを表しているので、その一部を遅延ロードできます。
スリル:
特定のオブジェクトチャンクの読み込み時間を測定する方法は?コンストラクターの呼び出しをログに記録し、そこから移動しますか?より良いアイデアはありますか?
編集:
シリアル化の代替案については話したくありません。そのテーマに関する投稿はたくさんあります。なぜこれほど遅いのか、オブジェクトグラフのどの部分が「切り出し」と遅延ロードの適切な候補であるのかを調査したいと思います。
.net - BinaryFormatter を使用した参照のバイナリ シリアル化
次のクラス構造が与えられた場合、Bar は期待どおりにシリアライズ/デシリアライズしますか?
私はいくつかのことに興味があります:
1) BinaryFormatter は、Bar クラスを [Serializable] 属性で装飾するか、ISerializable インターフェイスを実装する必要がありますか?
2) Foo クラスも [Serializable] 属性で装飾する必要がありますか?
3) Bar が単に [Serializable] 属性で装飾されている場合、フィールド Bar.SelectedFoo は配列への参照を正しく維持しますか? それとも、その Foo のコピーを手に入れるのでしょうか?