XmlSerializer可以反序列化为Nullable <int>吗?

jlp*_*jlp 5 asp.net xml-serialization

这是可以将XmlSerializer反序列化为Nullable <int>的副本吗?但我需要一个既不会改变xml文档也不会强迫我实现IXmlSerializable接口的解决方案.我不想实现IXmlSerializable,因为除了<number> 之外还有许多其他元素可以正确反序列化.

我的xml可以包含元素<number>4</number><number/>

<root>
...
either <number>4</number> or <number/>
... [other elements]
</root>
Run Code Online (Sandbox Code Playgroud)

public class root
{
public int? number {get; set;}
...
}
Run Code Online (Sandbox Code Playgroud)

不起作用.

Che*_*eso 9

您可以使用代理属性.

public class MyType1
{
    // XmlIgnore means it is not directly serialized
    [XmlIgnore]
    public int? number
    {
        get; set;
    }

    // acts as a surrogate for the nullable property
    [XmlElement("number")]
    public string _number_Surrogate
    {
        get
        {
            return (number.HasValue) ? number.ToString() : "";
        }
        set
        {
            if (!value.Equals(""))
            {
                number = Int32.Parse(value);
            }
        }
    }

    public System.DateTime Time
    {
        get; set;
    }
}
Run Code Online (Sandbox Code Playgroud)