0

我有一个以前序列化的课程。我们有它的 xml 输出。当我们打开项目时,我们反序列化 xml 以获取保留的对象。现在我在类中添加了新的 bool 属性,因为它是一个新属性,旧的 xmls 没有这个属性。我的反序列化工作正常,但将 false 分配给 bool 属性,如果 XML 中不存在,我希望它设置为 true。我怎样才能做到这一点?我试过这样

public bool? _flag;
[XmlElement("Flag")]
public bool? flag
{
    get
    {
        if (null != _flag)
        {
            return _flag;
        }
        return true;
    }
    set { _flag= value; }
}
4

1 回答 1

2

您只需要添加默认构造函数并将其设置在那里。这是一个例子:

public MyObject()
{
    Flag = true;
}

编辑

我不确定您的代码中发生了什么,但这完全可以正常工作:

public class MyObject
    {
        public MyObject()
        {
            Flag = true;
        }

        public bool Flag { get; set; }

        public string Name { get; set; }
    }

首先,我没有 bool 属性并将其序列化到文件中。然后在第 2 步中,我添加了 bool 属性和构造函数。然后从磁盘反序列化它并显示true,这是我所期望的。

请检查您的代码,因为我预计会发生其他事情。如果您需要帮助,请在此处发布完整课程。

于 2013-03-13T04:41:15.227 回答