次のクラス構造が与えられた場合、Bar は期待どおりにシリアライズ/デシリアライズしますか?
public class Foo { int x; string y; }
[Serializable]
public class Bar {
Foo[] AllFoos;
Foo SelectedFoo;
public Bar(Foo[] allFoos, int selectedFooIndex) {
this.AllFoos = allFoos;
this.SelectedFoo = allFoos[selectedFooIndex];
}
}
私はいくつかのことに興味があります:
1) BinaryFormatter は、Bar クラスを [Serializable] 属性で装飾するか、ISerializable インターフェイスを実装する必要がありますか?
2) Foo クラスも [Serializable] 属性で装飾する必要がありますか?
3) Bar が単に [Serializable] 属性で装飾されている場合、フィールド Bar.SelectedFoo は配列への参照を正しく維持しますか? それとも、その Foo のコピーを手に入れるのでしょうか?