DeSerialize null values
本文关键字:values null DeSerialize | 更新日期: 2023-09-27 18:26:14
我正试图将一个xml文件序列化为一个元素可以为空的类
XML文件
<Status StatusId="1">
<StatusName>Not inspected</StatusName>
<Acute></Acute>
</Status>
<Status StatusId="2">
<StatusName>Acute</StatusName>
<Acute>1</Acute>
</Status>
类
private int _acute;
public int Acute
{
get { return _acute; }
set
{
_acute = value;
NotifyPropertyChanged("Acute");
}
}
我试过int?和CCD_ 1,但什么都不起作用——任何人都知道如何在空的elemet中读取而不会出现任何错误。
我猜这不是正确的方法,但我过去自己处理过从string
到int
的转换。大致:
private int _acute = 0; // or assign to some more appropriate default
[XmlIgnore]
public int Acute
{
get { return _acute; }
set
{
_acute = value;
NotifyPropertyChanged("Acute");
}
}
// I kept mine as public but may be able to hide it at a minimal level that
// serialization still works.
[XmlElement(ElementName = "Acute")]
public string SerializedAcute
{
get { return _acute.ToString(); }
set
{
Int32.TryParse(value, out _acute)
}
}
如果你有很多这样的东西,它可能会变得有点难看。
尝试将Acute设置为int?
。int不能包含null,可为null的int(int?s)可以。
编辑:注意在回应之前要自我阅读所有内容。
也许您的问题是,<Acute>
实际上并没有从XML中丢失,它在那里,但有一个空值,不能转换为任何int?尝试从XML中删除<Acute></Acute>
行,并将属性改回int。