我很好奇WCF服务的非.NET客户端应用程序可以向给定方法发出信号,表示它不希望为给定参数指定值(使服务接受默认值) 。换句话说,应用程序如何向WCF服务发送null
参数?
答案 0 :(得分:3)
如果您使用SOAP(或其他一些基于XML的标准)与服务进行通信,则可以使用<myProperty xsi:nil="true"/>
来提供该属性。非.NET客户端应用程序如何生成nil
值将特定于您正在使用的框架。
答案 1 :(得分:3)
它可以从SOAP文档中排除参数(假设HTTP端点),假设允许这样做。
究竟是否允许/应该如何完成取决于XSD的生成方式。
这些可以通过[DataMember]
属性的参数来控制。
如果[DataMember(IsRequired=true)]
MSDN那么xml将需要包含这个元素(minOccurs将是1我相信),如果元素可能是nillable(nillable = true,取决于数据类型)< / p>
如果[DataMember(EmitDefaultValue=true)]
MSDN,则元素在序列化时具有默认值时会有一个元素。
答案 2 :(得分:3)
除了Ethan的答案,您还可以在DataMember属性上设置IsRequired属性:
[DataMember(IsRequired=false)]
当设置为false时,如果SOAP消息中缺少该属性,DataContractSerializer会将该属性设置为其默认值(对于任何可空类型,为null)。有时,使用otehr语言的SOAP客户端可能更容易省略属性,而不是发送<myProperty xsi:nil="true"/>