2017-06-15 9 views
0

私は2つのクラスを持っています。 Derivedクラスを作成する前に、ListBaseクラスオブジェクトをバイナリファイルにシリアライズしましたが、逆シリアル化しようとしましたが、逆シリアル化結果をobjectに割り当てようとしても、何も割り当てない「BaseをタイプDerivedに変換できません」というメッセージがDeserializeメソッドを呼び出す行に表示されます。ただし、Derivedクラスの名前をBaseに変更した場合、のプロパティはBaseに存在しません。nullとなるように、逆シリアル化を行います。C#ベース型からの逆シリアル化は派生型に変換しようとして失敗します

できる場合は、BinaryFormatterBaseクラスを逆シリアル化時にDerivedに変換しないようにすることはできますか?

+1

私たちは自分でエラーを再現できるようにコードサンプルを表示できますか? –

+1

@EdPlunkett私はすでに問題の原因を見つけましたが、あなたの注意を払ってくれてありがとう。 –

+0

[あなた自身の質問に答える](https://stackoverflow.com/help/self-answer)が必要な場合は、答えを受け入れてください。 – dbc

答えて

1

私自身が答えを見つけました。

Baseクラスは、クラスAオブジェクトのリストを持っていたし、それらのそれぞれは、私がBaseオブジェクトリストをシリアライズ現時点でBaseクラスを参照しました。逆シリアル化を試みた瞬間、Aオブジェクトはコード内でDerivedオブジェクトを参照していましたが、ファイル内ではまだBaseを参照していました。これは変換エラーの原因となりました。だから私のBaseオブジェクトをバージョンDerivedにバージョンアップしましたが、Aオブジェクトのバージョンを忘れてしまったという問題がありました。

関連する問題