我正在使用来自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;
字段如何可以为空并且具有指定的字段?
答案 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
生成可空字段。