我的问题是这个。我有一个可序列化的类,我为它添加了int
类型的新字段
现在,如果我desrialize
较旧的xml
新字段未显示,则会获得default
值0
。
我有自己的default
值,比如值3
,以便在字段未初始化时进行设置。
用户也可以修改该字段的值
但我怎么知道它的值是否为0
,因为它不在文件中,在这种情况下我需要用3
覆盖它,或者因为它在文件中的值为{ {1}}?在这种情况下,我不需要改变它
答案 0 :(得分:1)
为什么不在课堂上设置默认值?例如:
public class SerializableObject
{
public SerializableObject()
{
ValueWithDefault = 3;
}
public int ValueWithDefault { get; set; }
}
现在,如果要对缺少值的XML进行反序列化,ValueWithDefault
将设置为3
。如果要对存在该值的XML进行反序列化,则ValueWithDefault
将设置为该值。
唯一的另一个选择是自己实施IXmlSerializable
,但如果您可以避免,那么这并不是您真正想要做的事情。遗憾的是没有“钩子”。进入XmlSerializer
过程,它是全有或全无。