問題タブ [binary-serialization]
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# - .NET バイナリ シリアル化メタデータ
1 週間前、私は、他の誰かが作成した別のアプリケーションによって作成されたバイナリ シリアル化されたオブジェクトを読み取らなければならない状況に陥りました。私は someSerializedData.bin ファイルしか持っていなかったので、未知のオブジェクトのクラス定義を手動で再作成しようとしましたが、シリアル化されたファイルのメタデータのために、それを行うことができました。奇妙なことに、Google でツールを見つけることができませんでした。
Q1: バイナリのシリアル化されたファイル/データからクラス定義を再作成するツールがないのはなぜですか?
そして、それは私の2番目の質問につながります
Q2: シリアル化されたデータからクラス定義を復元できない場合はありますか? (暗号化も難読化もされていないと仮定すると、「デフォルト」の .NET Binaryserializer プロパティを使用して、含まれる型情報とメタデータを無効にするケースに興味があります)
c# - Objective CとC#の間の任意のオブジェクトのバイナリシリアル化?
フォレスト (辞書、配列、セット、数値、文字列、バイト バッファーなどの値を持つ辞書) を目的の C と C# の間で効率的に渡したい (時間的には、スペースはそれほど重要ではありません)。Google の Protocol Buffers は良さそうに見えましたが、構造化されたデータのみを処理しているように見えますが、私たちのプロトコルは任意です。最終的には自分でバイナリ (デ) シリアライザーを作成できますが、これは以前に行われ、どこかで FOSS としてリリースされたのでしょうか?
c# - あるアセンブリと名前空間から別のアセンブリと名前空間への型の移動を処理する Binary Formatter の SerializationBinder を作成する方法
文脈は以下の通り
- コードを別のプロジェクトに移動してリファクタリングしたい
- このコードの一部は、複数のエンドポイント間でデータを送受信するために使用されるシリアライズ可能な DTO で構成されています
- コードを移動すると、シリアライゼーションが壊れます (したがって、アプリケーションの古いバージョンとの下位互換性はありません)
この問題の解決策は、あるタイプから別のタイプにある意味で「リダイレクト」できるようにする SerializationBinder です。
したがって、このニーズを満たすために SerializationBinder を作成したいと思います。ただし、次の要件を満たす必要があります。
- SerializationBinder への入力は、古い型から新しい型へのマッピングのリストである必要があります。マッピングには、古いアセンブリ名 (バージョンなし、公開キー トークンなし) と型の古い完全な名前 (名前空間と名前)、および新しいアセンブリ名と型の新しい完全な名前を含める必要があります。
- 入力にある型の場合、アセンブリのバージョン番号は無視する必要があります
- 入力にジェネリックを含める必要なく、型がジェネリック (リスト、ディクショナリなど) にある場合は、ジェネリックを処理する必要があります。
- 入力に含まれていないもの (つまり、移動していない型や、たとえばデータセットのような .NET 型) については、既定でバイナリ シリアライザーのすぐに使えるアルゴリズムを使用する必要があります。
これは可能ですか、それとも私は夢を見ていますか? すでにこれを行っているものはありますか?これはよくある問題だと思います。
これまでのところ、3 を実行する簡単な方法はなく、4 を実行する方法もまったくありません。
ここに試みがあります
c# - C# BinaryFormatter は既存のオブジェクトとして逆シリアル化します
BinaryFormatter を使用して、クラスの逆シリアル化メソッドをオーバーライドして、新しいクラスを作成するのではなく、このクラスの既存のインスタンスを返すようにするにはどうすればよいでしょうか?
c# - バイナリ フォーマッタのシリアル化された文字列は、メモ帳で読み込まれたファイルに直接表示されますか?
C# を使用して、バイナリ フォーマッタで多くの文字列を含む大きなクラスをシリアル化しようとしました。
オリジナルのXML S/L方式に比べて読み書きの速度が少し速くなります。
ただし、メモ帳でバイナリ ファイルを開くと、ほとんどのファイルは読み取れませんが、文字列の値は元の値のままで、シリアル化されていないように見えます。
私の友人は、これはまだ改善できると私に言いました。彼は、文字列がシリアル化されると、バイナリ ファイル全体がまったく読み取れなくなり、読み込み速度をさらに向上させることができると述べました。本当?このシリアル化されたファイルでできることはまだありますか?