svcutil和指定的字段

时间:2011-06-14 09:05:29

标签: c# wsdl svcutil.exe

我正在使用来自Web服务的svcutil生成数据合同。

svcutil /language:cs /noConfig /targetclientversion:Version35 
        /out:Generated\ProductService.cs http://example.com/ProductService.svc?wsdl

生成的字段如下所示:

private System.Nullable<System.DateTime> createdField;
private bool createdFieldSpecified;

字段如何可以为空并且具有指定的字段?

2 个答案:

答案 0 :(得分:6)

它取决于源Wsdl。我打赌这有一些东西(不确定语法):

<xsd:element name="created" type="xsd:datetime" minOccurs="0" xsd:nil="true" />

svcutil.exe使用nillable生成Nullable<>字段,使用minOccurs生成字段+指定组合。

我还打赌WSDL不是.Net生成的WSDL!

答案 1 :(得分:1)

类生成由Web服务的XSD架构驱动。

为了生成可空字段。该字段应标记为nillable

<xs:element minOccurs="0" maxOccurs="1" name="created" type="xs:dateTime" nillable="true" />

XML将如下所示。

<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <created xsi:nil="true" />
</root>

我相信您架构中的这个字段如下所示:

<xs:element minOccurs="0" maxOccurs="1" name="created" />

如果createdFieldSpecified = false

,它将完全省略该元素
<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
</root>

底线:应更新Web服务架构,以便使用svcutil生成可空字段。