我有一个可以为 null int 的类?设置为序列化为 xml 元素的数据类型。有什么方法可以设置它,以便 xml 序列化程序在值为 null 时不会序列化该元素吗?
我尝试添加 [System.Xml.Serialization.XmlElement(IsNullable=false)] 属性,但收到运行时序列化异常,指出存在反映类型的错误,因为“IsNullable 可能未设置为 'false” ' 对于 Nullable 类型。请考虑使用“System.Int32”类型或从 XmlElement 属性中删除 IsNullable 属性。
[Serializable]
[System.Xml.Serialization.XmlRoot("Score", Namespace = "http://mycomp.com/test/score/v1")]
public class Score
{
private int? iID_m;
...
/// <summary>
///
/// </summary>
public int? ID
{
get
{
return iID_m;
}
set
{
iID_m = value;
}
}
...
}
上面的类将序列化为:
<Score xmlns="http://mycomp.com/test/score/v1">
<ID xsi:nil="true" />
</Score>
但对于 null 的 ID,我根本不需要 ID 元素,主要是因为当我在 MSSQL 中使用 OPENXML 时,它会为如下所示的元素返回 0 而不是 null
XmlSerializer 支持ShouldSerialize{Foo}()
模式,因此您可以添加一个方法:
public bool ShouldSerializeID() {return ID.HasValue;}
还有{Foo}Specified
模式 - 不确定 XmlSerializer 是否支持该模式。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)