C#中的XML反序列化#
问题描述:
我有一个之前被序列化过的类。我们有它的xml输出。 当我们打开项目时,我们反序列化xml以获取保存的对象。 现在我已将新的bool属性添加到类中,并且由于它是一个新属性,所以旧xml不具有此属性。我的反序列化工作正常,但为bool属性赋予false,如果它不在XML中,我希望它设置为true。我怎样才能做到这一点?我试过像这样C#中的XML反序列化#
public bool? _flag;
[XmlElement("Flag")]
public bool? flag
{
get
{
if (null != _flag)
{
return _flag;
}
return true;
}
set { _flag= value; }
}
答
你只需要添加你的默认构造函数并将其设置在那里。这里有一个例子:
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
,这正是我的预期。
请检查您的代码,因为我预计会发生其他事情。如果您需要帮助,请在这里发布完整课程。
反序列化跳过初始化,您可以检查http://*.com/questions/1266547/how-do-you-find-out-when-youve-been-loaded-via-xml-serialization的解决方法 – Polity 2013-03-13 03:59:33