問題タブ [serializationbinder]
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# - 署名されたアセンブリの異なるバージョンで記述されたジェネリックを逆シリアル化するための最良の方法は何ですか?
その他の場合は、アセンブリタイプからバージョンを削除するSerializationBinderを追加することをお勧めします。ただし、署名されたアセンブリで見つかったタイプのジェネリックコレクションを使用する場合、そのタイプはそのアセンブリに基づいて厳密にバージョン管理されます。
これが私が見つけた作品です。
ただし、バインディングプロセスをグローバルに変更させることは、私にはかなり危険に思えます。複数のスレッドでシリアル化が行われていると、奇妙なことが起こる可能性があります。おそらく、より良い解決策は、typeNameの正規表現操作を行うことです。
編集: 文字列ベースの方法は機能しません。ジェネリックスには、完全に厳密に名前が付けられた型が必要なようです。あなたが私に尋ねればかなり凶悪です。
c# - カスタムタイプとシリアル化のリストに関する問題
いずれかの製品のバージョン2.0のリリースに取り組んでおり、バージョン1.0のお客様のインストールベースとのファイル互換性を維持したいと考えています。私はアプリケーションのほとんどのタイプにISerializableを実装してきましたが、問題が発生したようです。
私はタイプを持っています、議論のためにそれをファミリーと呼びましょう
これはバージョン1.0として出荷されたものであり、2.0ではNameクラスをPersonに変更しました。これは事実上同じですが、コンストラクターがわずかに異なり、明らかに名前が異なります。
これは明らかに機能しません。タイプ"Name"はアセンブリに存在しないため、SerializationBinderを追加して修正しました。
これは主に機能します。オブジェクトを逆シリアル化すると、バインダーが呼び出され、正しい型が返されますが、Personの逆シリアル化コンストラクターが呼び出されることはありません。例外はスローされていません、誰かが何かアイデアがありますか?
c# - "System.Collections.Generic.List`1" SerializationBinder BindToType
私は、以下をバイトの配列としてクライアントにシリアル化して返すWebサービスを持っています。
つまり、List(Of MyFile)をクライアントに返します。
次のTYPENAMEを持つクライアントによって消費されます
アセンブリ名は次のとおりです。
次の2つのクラスを使用して、逆シリアル化にバインドしています。
しかし、私の人生の間、そしてGETTYPEステートメントで多くのバリエーションを試している間、私のTYPEは常にNULLです。
たとえば、STACKOVERFLOWの投稿ごとに、次のことを試しました。
しかし、それは機能しませんでした:(