确定XML序列化中的默认值和实际值

时间:2015-07-29 11:03:27

标签: c# xml serialization

我的问题是这个。我有一个可序列化的类,我为它添加了int类型的新字段  现在,如果我desrialize较旧的xml新字段未显示,则会获得default0。 我有自己的default值,比如值3,以便在字段未初始化时进行设置。 用户也可以修改该字段的值 但我怎么知道它的值是否为0,因为它不在文件中,在这种情况下我需要用3覆盖它,或者因为它在文件中的值为{ {1}}?在这种情况下,我不需要改变它

1 个答案:

答案 0 :(得分:1)

为什么不在课堂上设置默认值?例如:

public class SerializableObject
{
    public SerializableObject()
    {
        ValueWithDefault = 3;
    }

    public int ValueWithDefault { get; set; }
}

现在,如果要对缺少值的XML进行反序列化,ValueWithDefault将设置为3。如果要对存在该值的XML进行反序列化,则ValueWithDefault将设置为该值。

唯一的另一个选择是自己实施IXmlSerializable,但如果您可以避免,那么这并不是您真正想要做的事情。遗憾的是没有“钩子”。进入XmlSerializer过程,它是全有或全无。