4

TCP / IPを介して送信するために、ArrayListをバイナリファイルにシリアル化しています。シリアル化されたファイルはサーバーによって作成され、現在作成しているクライアントで逆シリアル化できることを望んでいます。

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

これを回避するにはどうすればよいですか?

4

3 に答える 3

6

配列リストにカスタムデータ型(つまり、独自のクラス)が含まれていますか?

逆シリアル化を実行しているコードが配列リストに含まれるすべてのクラスにアクセスできない限り、配列リストは逆シリアル化されません。

于 2009-04-14T11:38:04.100 に答える
1

バイナリシリアル化を使用している場合、クライアントは、ArrayListでシリアル化しているタイプを含むDLLにアクセスできる必要があります。私はそれがどのように行われるべきかを説明するためのあなたのセットアップについて本当に知らないと思いますが、それがその要点です。

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

于 2009-04-14T11:39:05.597 に答える
0

送信しようとしているデータは何ですか?そして、それをどのようにシリアル化していますか?を使用している場合BinaryFormatter、カスタムタイプを宣言するアセンブリは両端にある必要があります。

BinaryFormatterシステム間(同じシステムの異なるバージョン間を含む)でのシリアル化には、さまざまな問題があることに注意してください。DataContractSerializer、、またはprotobuf-net(効率的なクロスプラットフォームのバイナリ転送用)などの他のシリアライザーを確認することをお勧めします。

于 2009-04-14T11:40:18.793 に答える