1

私は多くのメンバーがいるクラスを持っています。一部のメンバーは不要です。クラス定義から不要なメンバーを削除したいと思います。

クラスは Serializable として宣言されています。以前に永続化されたオブジェクトが適切に逆シリアル化されないことが懸念されます。シリアライズ可能なクラスの定義を更新する手順は? シリアル化 (C# および Visual Basic)では、このトピックについて説明していません。

4

1 に答える 1

1

クラスからメンバーを削除する必要はありません。代わりに、 nonserialized属性で装飾することでメンバーをオプトアウトできます。nonserialized 属性で装飾されたメンバーはシリアライズされません。

[Serializable()]        
public class SimpleObject  {

    //A field that is serialized.
    public int member1;

    // A field that is not serialized.
    [NonSerialized()] public string member5; 

    public SimpleObject() {

        member1 = 11;
        member5 = "hello world!";
    }

}

以前に永続化されたオブジェクトの DeSerialization は、NonSerialized メンバー フィールドに空の値を保存します。これを解決するには、 OnDeserialized属性で装飾されたカスタム メソッドにメンバー初期化コードを記述します。

于 2012-10-25T05:13:53.447 に答える