2

私の問題に関するいくつかの背景: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常にコンストラクターを使用するように強制できれば、問題は解決すると思います。

4

0 に答える 0