2009-04-14 33 views
3

私は、TCP/IP経由で送信するためにバイナリファイルにArrayListをシリアライズしています。シリアライズされたファイルはサーバーによって作成され、私は現時点で書いているクライアントでデシリアライズできるようにしたいと考えています。アセンブリを見つけることができません

しかし、クライアントがデシリアライズしようとすると、ファイルをシリアライズするアセンブリが見つからないため、SerializationExceptionがスローされます(おそらく)。

どうすればこの問題を回避できますか?

+0

完全なソースコードを含む最終解決策ですか? – Kiquenet

答えて

5

arraylistにカスタムデータ型(独自のクラス)が含まれていますか?

デシリアライズを実行しているコードがarraylistに含まれるすべてのクラスにアクセスできる場合を除き、arraylistはデシリアライズされません。

1

バイナリシリアル化を使用している場合、クライアントは、ArrayListでシリアル化している型を含むDLLにアクセスする必要があります。私はあなたの設定がどのように行われるべきかを記述するための設定については実際にはわかりませんが、それはその要点です。

xmlシリアル化(XmlSerializaerまたはDataContractSerializerのいずれかを使用)のようなものを使用すると、Xmlを生成できます。本当にアセンブリを共有できない場合は、サーバー/クライアント側でオブジェクトコードを複製できます。

0

送信しようとしているデータは何ですか?あなたはどうやってそれをシリアライズしていますか? BinaryFormatterを使用している場合、カスタムタイプを宣言するアセンブリは両端になければなりません。

BinaryFormatterには、システム間でのシリアル化に関する問題(同じシステムの異なるバージョン間を含む)があります。 DataContractSerializerまたはprotobuf-net(効率的なクロスプラットフォームバイナリ転送用)などの他のシリアライザを見たい場合があります。