C♯相談室 Part7
レス数が950を超えています。1000を超えると書き込みができなくなります。
0953デフォルトの名無しさん
NGNG// Container の逆シリアル化コンストラクタ
public Container( SerializationInfo info, StreamingContext context )
{
MessageBox.Show( "Begin deserializing Container" );
child = (Child)info.GetValue( "child", typeof(Child) ); // child はフィールド
MessageBox.Show( "End deserializing Container" );
MessageBox.Show( child.Data ); // 値がおかしい
}
// Child の逆シリアル化コンストラクタ
public Child( SerializationInfo info, StreamingContext context )
{
MessageBox.Show( "Deserializie Child" );
}
上記のようなコードで逆シリアル化を行ったとき、
Begin Container -> Child -> End Container
の順番で呼ばれると思ったら
Begin Container -> End Container -> Child でした。
Container のコンストラクタ内で child にアクセスすると未初期化の Child が入っていて、
Container のコンストラクタを抜けた後に Child のコンストラクタが呼ばれているようです。
いまいち動作に納得がいかないのですが、これに関するドキュメントなどご存知でしたら教えてください。
レス数が950を超えています。1000を超えると書き込みができなくなります。