Warum wird [DataMember (EmitDefaultValue = false)] nicht empfohlen?

In WCF können Sie festlegen, einen Vertrag mit der [DataContract] und [DataMember] Attribute wie diese:

[DataContract]
public class Sample 
{
    [DataMember(EmitDefaultValue = false, IsRequired = false)]
    public string Test { get; set; }
}

Dieser Artikel auf der MSDN-Website Staaten, dass die Verwendung EmitDefaultValue = false wird nicht empfohlen:

Warum wird [DataMember (EmitDefaultValue = false)] nicht empfohlen?

Aber, ich mag zu verwenden, weil die XML-Datei wird generiert mit Hilfe dieser Konstruktion ist sauberer. Nicht die Angabe dieser Einstellung führt:

<Sample>
    <Test xsi:nil="true"/>
</Sample>

während die mit der Einstellung wird das element weggelassen werden, wenn es keinen Wert:

<Sample>
</Sample>

Ich bin neugierig, was die Argumentation hinter der Aussage ist. Speziell da beide Schnipsel von XML-look entspricht mir (und im letzten Teil kann deserialisiert werden korrekt für diesen Vertrag).

Was ist die Argumentation hinter dieser Aussage?

InformationsquelleAutor der Frage oɔɯǝɹ | 2011-03-21

Schreibe einen Kommentar