[DataContract]
在 WCF 中,您可以使用和[DataMember]
属性定义合同,如下所示:
[DataContract]
public class Sample
{
[DataMember(EmitDefaultValue = false, IsRequired = false)]
public string Test { get; set; }
}
MSDN上的这篇文章指出EmitDefaultValue = false
不建议使用:
但是,我喜欢使用它,因为使用这种构造生成的 XML 更干净。不指定此设置会导致:
<Sample>
<Test xsi:nil="true"/>
</Sample>
在使用设置时,当没有值时元素被省略:
<Sample>
</Sample>
我很好奇这句话背后的原因是什么。特别是因为 XML 的两个片段看起来都和我一样(并且最后一部分都可以为这个合同正确反序列化)。
这种说法背后的原因是什么?