Я предполагаю, что xml на самом деле что-то вроде <UpdatedOn/>
/ <DeletedOn/>
? т.е. пустые элементы.
Когда задействованы нестандартные форматы, одна хитрость заключается в том, чтобы ввести собственное свойство shim:
[Serializable]
public class Foo {
[XmlIgnore]
public DateTime Bar { get; set; }
[Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]
[XmlElement("Bar")]
public string BarTransport {
get {
return Bar == DateTime.MinValue ? "" : XmlConvert.ToString(Bar);
}
set {
Bar = string.IsNullOrEmpty(value) ? DateTime.MinValue
: XmlConvert.ToDateTime(value);
}
}
}
Здесь свойство Foo.Bar
(фактическое DateTime
) не используется во время сериализации; вместо этого свойство Foo.BarTransport
сериализуется под элементом Bar
, но со специальными правилами. Вы можете заменить DateTime.MinValue
любым другим значением, которое вы хотите считать пустым / значением по умолчанию.
Обратите внимание, что если вы вообще не хотите отправлять элемент Bar
, вы можете написать public bool ShouldSerializeBarTransport()
, который XmlSerializer
проверит - если вы вернете false
, он не будет записан.