Это - дубликат XmlSerializer, может десериализовать в Nullable <интервал>? но мне нужно решение, что ни изменить xml документ, ни вынуждает меня реализовать интерфейс IXmlSerializable. Я не хочу реализовывать IXmlSerializable, потому что у меня есть много дополнительных элементов около Мой xml может содержать любой элемент Класс не работает.
или 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;
}
}
Вы всегда можете сделать строку заменить на окончательный выход XML.
Replace(" i:nil=\"true\"/>","/>");
Вообще, это плохая идея, чтобы попытаться взломать на XML со строковыми манипуляциями, но замена выше безопасна и всегда будет конвертировать <все, что я: nil = "True" />
- <Что-нибудь />
.
Это хак, но приемлемый, учитывая альтернативу.