给定一个像这样的类:
[Serializable]
public class MyClass {
string name;
string address;
public MyClass(SerializationInfo info, StreamingContext context){
name = info.GetString("name");
if(/* todo: check if a value for address exists */)
address = info.GetString("address");
}
public void GetObjectData(SerializationInfo info, StreamingContext context){
info.AddValue(name);
if(address != null)
info.AddValue(address);
}
}
如何address
在调用之前测试该字段的值是否存在info.GetString(address)
?
是的,我明白我可以简单地写一个空address
字段,但我真正的问题是早期版本的MyClass
, 没有地址字段。
注意:我有充分的理由使用自定义序列化。有一些静态字段被用作单例,默认反序列化不会尊重这一点。