我有一个有很多成员的班级。有些成员是不需要的。我想从类定义中删除不需要的成员。
该类被声明为可序列化。我担心以前持久化的对象不会正确反序列化。更新可序列化类的定义的过程是什么?序列化(C# 和 Visual Basic)不讨论该主题。
我有一个有很多成员的班级。有些成员是不需要的。我想从类定义中删除不需要的成员。
该类被声明为可序列化。我担心以前持久化的对象不会正确反序列化。更新可序列化类的定义的过程是什么?序列化(C# 和 Visual Basic)不讨论该主题。
您不必从您的班级中删除成员。相反,您可以通过使用非序列化属性装饰来选择退出成员。使用非序列化属性装饰的成员将不会被序列化。
[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属性修饰的自定义方法上编写成员初始化代码。