2012-02-14 11 views
0

私は現在、クライアントからサーバーに文字列を送り届けるために使用するソケットアプリケーションを持っています。私は最近、シリアル化されたオブジェクトを代わりに送信する方が合理的だと判断しましたが、問題に遭遇しました。 SoapFormatterを使ってコードを変換し、オブジェクトを文字列にシリアル化して文字列を送信できるようにしました。継承されたオブジェクトを逆シリアル化しようとすると、クライアント側で問題が発生しました。 soapformatterは継承をサポートしていないようです。私は子オブジェクトを送信するときに親オブジェクトを逆シリアル化しようとすると(私はこれが正しい用語であるか分からない)、キャストの例外をスローすると、デシリアライゼーション中に問題が発生しました。.net BinaryFormatterは継承をサポートしていますか?

私の質問は、BinaryFormatterは継承をサポートしていますか?

+1

郵便番号...あなたの質問は大きな意味がありません。 –

+0

もちろん、うまくいきます。 – leppie

+1

自分でデシリアライズを行っていますか、それともRemoting/web-services/WCFを使用してサービスコールの一部ですか?おそらく問題はシリアライザではなく、サービス契約である可能性があります。 –

答えて

3

SoapFormatterBinaryFormatterは、他のタイプを継承するタイプのオブジェクトを直列化することをサポートしています。つまり、両方とも継承をサポートしています。

SoapFormatterで、あなたの特定の問題について別の質問をすることをおすすめします。また、別のフォーマッタを使用するだけで、問題が解決されることはありません(ただし、ここで質問する前に試してみてください)。

+0

はい、継承をサポートしているようです。私はそれ以外の場所を読んだ。私の問題は、各クラスがシリアライズされたときに、 "ExampleMessage version = 1.0.0.0 project = server"というような署名が付けられていることがわかりました。私はサーバーとクライアントのために同じであるExampleMessage.csと呼ばれるリンクされたファイルを使用していますが、シリアライザは異なるプロジェクトによって構築されているので、異なるクラスとして扱います。したがって、デシリアライズ時にキャスト例外がスローされます。 – german129

+0

はい、通常の状況では、直列化を解除するときと同じように直列化するときに、同じアセンブリから型を取得する必要があります。 – svick

関連する問題