Visual Studio 2008 импортирует WSDL с неверным типом данных - PullRequest
1 голос
/ 05 октября 2009

Я пытаюсь использовать веб-сервис и, таким образом, добавил ссылку на веб-сервис в свой проект, используя описание сервиса WSDL. Все хорошо, сообщений об ошибках не было, но я заметил, что одно поле объявлено как string в моей ссылке на веб-сервис, тогда как оно должно быть int.

Просматривая описание службы WSDL, я заметил, что соответствующее поле объявлено как:

<xsd:complexType name="ItemType">
    <xsd:all>
        <xsd:element name="quantity" type="xsd:integer"/>
    </xsd:all>
</xsd:complexType>

Очевидно, что поле должно быть целым числом, но Visual Studio 2008 считает, что это строка.

Мои вопросы:

  1. Является ли xsd:integer допустимым типом данных WSDL или не должно быть xsd:int?
  2. Как я могу сказать VS 2008, что это поле должно быть int?
  3. Смогу ли я по-прежнему пользоваться услугой, когда я предоставлю string (только содержащий цифры) в C #, где вызывающий (очевидно, скрипт PHP) ожидает int?

Спасибо за вашу помощь!

1 Ответ

4 голосов
/ 05 октября 2009

Проблема в том, что xs:integer - это "целое число со знаком произвольной длины" - поэтому оно может быть больше диапазона типа .NET Int32 -> таким образом, оно конвертируется в строку с помощью VS2008.

Использовать xs:int - я полагаю, что он правильно конвертируется в Int32.

Смотрите здесь: http://www.codesynthesis.com/projects/xsd/documentation/schema-authoring-guide.xhtml#integer

xs:int отображается в 32-разрядное целое число, тогда как xs:integer имеет произвольную длину.

Смогу ли я пользоваться службой, когда предоставлю строку (только содержащие цифры) в C #, где вызывающая сторона (очевидно, PHP-скрипт) ожидает int?

Я бы сказал, что да, потому что в конце сообщения, передаваемые по проводам, всегда будут текстовым XML в своей основе. На самом деле все равно, передаете ли вы строку «12345» и сериализуете ли вы ее в свое сообщение XML, или вы сериализуете «12345» как INT в сообщении - в XML, в конце концов, все является строкой. *

Марк

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...