c#xml序列化不写null

Pat*_*ick 4 c# xml null serialization xml-nil

当我使用可空的DateTime序列化ac#对象时,有没有办法将空值保留在xml文件之外而不是

 <EndDate d2p1:nil="true" xmlns:d2p1="http://www.w3.org/2001/XMLSchema-instance" />
Run Code Online (Sandbox Code Playgroud)

mel*_*okb 9

您可以使用Specified扩展属性省略空值(或任何其他值).基本上,创建另一个与序列化属性同名的属性,并将单词Specified作为布尔值添加到末尾.如果Specified属性是true,则它所控制的属性是序列化的.否则,如果是false,则其他属性完全不在xml文件中:

[XmlElement("EndDate")]
public DateTime? EndDate { get; set; }
[XmlIgnore]
public bool EndDateSpecified { get {
    return (EndDate != null && EndDate.HasValue); } }
Run Code Online (Sandbox Code Playgroud)

  • 只需要 `EndDate != null` 和 `EndDate.HasValue` 之一。[看到这个答案](http://stackoverflow.com/a/676089/386544) (3认同)