私の問題に関するいくつかの背景:ISerializable
私は実装し、明示的なBinaryFormatter
メソッド
を使用してシリアル化されるように設計さ
れた多くのクラスを持っています:.ctor(SerializationInfo info, StreamingContext context)
そして、オブジェクトを逆シリアル化するときに常にコンストラクターを呼び出すとは限らないvoid GetObjectData(SerializationInfo info, StreamingContext context)
ことを最近発見しました。BinaryFormatter
おそらく、BinaryFormatter
オブジェクトグラフをビットごとにメモリにコピーすることになっているため、「構築済み」オブジェクトのコンストラクターは呼び出されません。OnDeserialized
これは私にとってはうまくいきません:が呼び出され、コンストラクターが実行されていない場合、私のプライベート メンバーは常に null 参照です。によって収集されたシリアル化されたデータを引き続き取得できれば、これは解決される可能性がありますが、オブジェクトGetObjectData
へのアクセスを許可するコンストラクターしか見つかりません。SerializationInfo
私の質問:
以外.ctor(SerializationInfo info, StreamingContext context)
に、収集された値を取得する方法はありますvoid GetObjectData(SerializationInfo info, StreamingContext context)
か?
または:BinaryFormatter
コンストラクターを呼び出すかどうかを決定する
方法の手がかりはありますか? BinaryFormatter
常にコンストラクターを使用するように強制できれば、問題は解決すると思います。