1

我有一个有很多成员的班级。有些成员是不需要的。我想从类定义中删除不需要的成员。

该类被声明为可序列化。我担心以前持久化的对象不会正确反序列化。更新可序列化类的定义的过程是什么?序列化(C# 和 Visual Basic)不讨论该主题。

4

1 回答 1

1

您不必从您的班级中删除成员。相反,您可以通过使用非序列化属性装饰来选择退出成员。使用非序列化属性装饰的成员将不会被序列化。

[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!";
    }

}

对先前持久化对象的反序列化将在 NonSerialized 成员字段上保存一个空值。为了解决这个问题,您可以在使用OnDeserialized属性修饰的自定义方法上编写成员初始化代码。

于 2012-10-25T05:13:53.447 回答