gpt4 book ai didi

c# - 序列化一个可为空的 int

转载 作者:IT王子 更新时间:2023-10-29 03:37:41 26 4
gpt4 key购买 nike

我有一个带有可为空 int 的类?数据类型设置为序列化为 xml 元素。有什么方法可以设置它,以便 xml 序列化程序在值为 null 时不会序列化元素?

我已尝试添加 [System.Xml.Serialization.XmlElement(IsNullable=false)] 属性,但我收到运行时序列化异常,指出存在反射(reflect)类型的错误,因为“可能未设置 IsNullable对于 Nullable 类型为“false”。考虑使用“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 元素,主要是因为当我在 MSSQL 中使用 OPENXML 时,它会为看起来像的元素返回 0 而不是空值

最佳答案

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

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

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

关于c# - 序列化一个可为空的 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/244953/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com