Sie müssen wahrscheinlich IXmlSerializable
implementieren und Ihren Typ manuell serialisieren, dann können Sie den Nullable<DateTime>
verwenden. Hier ein Beispiel:
public class MyData : IXmlSerializable
{
public Nullable<DateTime> MyDateTime { get; set; }
public void WriteXml(XmlWriter writer)
{
if (this.MyDateTime.HasValue)
{
writer.WriteStartElement("MyDateTime");
writer.WriteValue((DateTime)this.MyDateTime);
writer.WriteEndElement();
}
}
public void ReadXml(XmlReader reader)
{
if (reader.ReadToDescendant("MyDateTime"))
{
this.MyDateTime = reader.ReadElementContentAsDateTime();
}
}
public XmlSchema GetSchema()
{
return null;
}
}
Mit diesem:
MyData md = new MyData { MyDateTime = null };
XmlSerializer ser = new XmlSerializer(typeof(MyData));
using (var writer = XmlWriter.Create(@"d:\temp\test.xml"))
{
ser.Serialize(writer, md);
}
using (var reader = XmlReader.Create(@"d:\temp\test.xml"))
{
md = (MyData)ser.Deserialize(reader);
WL(md.MyDateTime.HasValue);
}
ändern, dass in erster Linie zum MyDateTime = DateTime.Now
das alternativen Verhalten zu sehen. Dies schreibt und liest den Wert MyDateTime je nachdem, ob es in der XML vorhanden ist:
<?xml version="1.0" encoding="utf-8"?>
<MyData />
<?xml version="1.0" encoding="utf-8"?>
<MyData>
<MyDateTime>2009-08-06T10:10:14.8311049+01:00</MyDateTime>
</MyData>
Können Sie es –
Added ein Beispiel erarbeiten, scheint für mich arbeiten! Ich denke, das sollte auch für Ihr Webservice-Ergebnis funktionieren. –