我正在尝试将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?和[XmlElement( IsNullable = true )]
但没有任何人知道如何在没有任何错误的情况下阅读空的elemet。
答案 0 :(得分:1)
我猜这不是正确的方式,但我过去通过处理从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)
}
}
如果你有很多这些,虽然它可能有点难看。
答案 1 :(得分:0)
尝试使用急性int?
。 Int不能包含null,可以为空的int(int?s)可以。
编辑:注意自我 - 在回复之前阅读所有内容。
也许你的问题是<Acute>
实际上并没有从XML中遗漏,它存在但是有一个空值,它不会转换为任何int?尝试从XML中删除<Acute></Acute>
行,并将属性更改回int?