这是
Can XmlSerializer deserialize into a Nullable<int>?的重复,但我需要一个既不会改变xml文档也不会强迫我实现IXmlSerializable接口的解决方案.我不想实现IXmlSerializable,因为我在< number>旁边有许多其他元素.正确反序列化.
我的xml可以包含元素< number> 4< / number>或< number />
<root> ... either <number>4</number> or <number/> ... [other elements] </root>
类
public class root { public int? number {get; set;} ... }
不起作用.
解决方法
您可以使用代理属性.
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; } }