序列化可为null的int

我有一个带有可为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>

但是对于ID为空的ID,我根本不需要ID元素,主要是因为当我在MSSQL中使用OPENXML时,对于看起来像这样的元素,它返回0而不是null

回答:

XmlSerializer支持该ShouldSerialize{Foo}()模式,因此您可以添加一个方法:

public bool ShouldSerializeID() {return ID.HasValue;}

还有一种{Foo}Specified模式-不确定XmlSerializer是否支持该模式。

以上是 序列化可为null的int 的全部内容, 来源链接: utcz.com/qa/400637.html

回到顶部