29
在WCF您可以使用[DataContract]
和[DataMember]
屬性定義一個合同,是這樣的:爲什麼不推薦使用[DataMember(EmitDefaultValue = false)]?
[DataContract]
public class Sample
{
[DataMember(EmitDefaultValue = false, IsRequired = false)]
public string Test { get; set; }
}
This article on the MSDN指出,使用EmitDefaultValue = false
不建議:
但是,我喜歡用這是因爲使用這種結構生成的XML更清晰。在使用設置元素時,有沒有值中省略
<Sample>
<Test xsi:nil="true"/>
</Sample>
:
<Sample>
</Sample>
我很好奇,是什麼說法背後的理由是不指定此設置的結果。具體而言,因爲XML的兩個插件看起來都和我相當(並且最後一部分可以正確地反序列化這個合同)。
這句話背後的推理是什麼?
其中重要的部分似乎是內部關注。如果您在調用的兩側使用.net技術,並強烈鍵入數據合同,則不應出現問題。 – Gent 2014-09-04 15:53:30