svcutil и указанные поля - PullRequest
6 голосов
/ 14 июня 2011

Я генерирую datacontract с 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 ]

6 голосов
/ 14 июня 2011

зависит от источника Wsdl.Бьюсь об заклад, есть что-то это (не уверен в синтаксисе):

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

svcutil.exe использовать nillable для создания поля Nullable<>, и minOccurs для получения поля + указанной комбинации.

Держу пари, что WSDL - это не WSDL, сгенерированный .Net!

1 голос
/ 14 июня 2011

Генерация классов осуществляется 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>

Итог: схема веб-службы должна быть обновлена, чтобы генерировать пустые поля с svcutil.

...