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>
その発言の背後にある理由が何なのか、私は興味があります。具体的には、XML の両方のスニペットが私と同等に見えるためです (そして、最後の部分は両方とも、このコントラクトに対して正しく逆シリアル化できます)。
この声明の背後にある理由は何ですか?