相关疑难解决方法(0)

为什么不建议使用[DataMember(EmitDefaultValue = false)]?

在WCF中,您可以使用[DataContract][DataMember]属性定义合同,如下所示:

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

MSDN上的这篇文章指出EmitDefaultValue = false不建议使用:

片段

但是,我喜欢使用它,因为使用这种结构生成的XML更清晰.未指定此设置会导致:

<Sample>
    <Test xsi:nil="true"/>
</Sample>
Run Code Online (Sandbox Code Playgroud)

使用设置时,如果没有值,则省略元素:

<Sample>
</Sample>
Run Code Online (Sandbox Code Playgroud)

我很好奇这个陈述背后的原因是什么.特别是因为XML的两个snipptes看起来都等同于我(并且最后一部分可以为此契约正确地反序列化).

这句话背后的原因是什么?

wcf msdn datacontract datamember

32
推荐指数
1
解决办法
2万
查看次数

标签 统计

datacontract ×1

datamember ×1

msdn ×1

wcf ×1