В WCF вы можете определить контракт, используя атрибуты [DataContract]
и [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>
Мне любопытно, что такое аргументация. В частности, поскольку оба snipptes XML выглядят эквивалентно мне (и обе последние части могут быть десериализованы правильно для этого контракта).
Какова причина этого утверждения?