2011-07-05 6 views
2

私の特定の状況はかなり慣れていません - 私は2つのアプリケーションがあります。主なものは、標準の.NETバイナリシリアル化を使用してオブジェクトをファイルに保存し、ロードします。 2番目のファイルは同じファイルからロードされますが、保存されたクラスの半分は必要ありません。必要なクラスを抽出したいだけです。インタフェースが共有されているが、実際のクラスではない.netバイナリ・セロライゼーションの問題

ではなく、に両方のアプリケーションで同じクラスが含まれていたので、私は必要なビットを分けて、両方のアプリケーションに共通のDLLにインターフェイスがあることを確認しました。

2番目のアプリケーションで実際に非直列化する必要があるまで、バイナリデシリアライザはインタフェースを認識しませんでした。 (アセンブリを見つけることができないと文句を言う)

答えて

2

私は答えの一部を見つけました - "AllowAllAssemblyVersionsDeserializationBinder" ...これはバイナリシリアル化を傍受する真剣に強力な方法で、元のクラスの "型交換"そのインターフェイスで。これにより、デシリアライズを継続して(つまり、ファイルをロードする)、不要なオブジェクトを遠ざけることができました。これにより、異なるファイル間のバージョンの問題をより強力に扱うことができます。

あり、ここを通して良い実行されます。他の人はそれが役立つ可能性があるため、http://spazzarama.wordpress.com/2009/06/25/binary-deserialize-unable-to-find-assembly/

は、だから私はそれをここで言及していますが、プラス「AllowAllAssemblyVersionsDeserializationBinder」のあいまい検索が何を思い付くていないとき、私は何かが間違っていることを確信していますStackOverflowの答え - それは言及する必要がある質問/答えのちょうどタイプです:)

[私はそれが私の問題を部分的に解決すると言います - 私は "共有"したい1つのクラスが必要ですフルクラスではないインターフェイス値は、実際の値を逆シリアル化しないので、抽象クラスなどを使用する必要があるかどうかを調べる必要があります。

[注2:完全なデザインを整理しながら開発をスピードアップするためのバイナリシリアル化をクイックフィックスとして使用したので、主な設計作業が進行し、バイナリに依存する必要はありませんシリアライザー最初のところ...]

関連する問題