Преобразование классов WSDL в C # - PullRequest
6 голосов
/ 02 ноября 2011

Преобразование классов WSDL в C # с помощью инструмента microsoft net wsdl.exe, но инструмент не может преобразовать следующую часть файла WSDL.Любые указатели в правильном направлении приветствуются.

Вход WSDL

<complexType name="Merchant">
 <sequence>
  <element name="iId" type="xsd:int" />
  <element name="sName" type="xsd:string" />
  <element name="sDescription" type="xsd:string" minOccurs="0" />
  <element name="aSectors" type="api:ArrayOfMerchantSectors" minOccurs="0" />
 </sequence>
</complexType>

<complexType name="ArrayOfMerchant">
 <complexContent>
  <restriction base="soapenc:Array">
   <attribute ref="soapenc:arrayType" wsdl:arrayType="api:Merchant[]" />
  </restriction>
 </complexContent>
</complexType>

<complexType name="MerchantSector">
 <sequence>
  <element name="iSectorId" type="xsd:int" />
  <element name="sSectorName" type="xsd:string" />
 </sequence>
</complexType>

<complexType name="ArrayOfMerchantSectors">
 <complexContent>
  <restriction base="soapenc:Array">
   <attribute ref="soapenc:arrayType" wsdl:arrayType="api:MerchantSector[]" />
  </restriction>
 </complexContent>
</complexType>

C # Выход ?????

/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://api.someexampledomain.com/")]
public partial class ArrayOfMerchant : Array
{
}

/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://api.someexampledomain.com/")]
public partial class ArrayOfMerchantSectors : Array
{
}

Я хотел бы знать, как определить класс 'Merchant' и 'ArrayOfMerchant'.

Спасибо.

Ответы [ 2 ]

29 голосов
/ 02 ноября 2011

Если вы взяли WSDL с собой, очень скоро можно создать прокси-класс C #.

Ниже упоминается один из способов сделать это. Если ваши данные WSDL не предоставляются через URL. Сначала сохраните доступные WSDL-данные в файл, скажем «D: \ MerchantService.wsdl»

svcutil.exe D:\MerchantService.wsdl /t:code /l:c# /o:"D:\MerchantService.cs" /n:*,NamespaceName 

Ссылка: http://msdn.microsoft.com/en-us/library/aa347733.aspx

4 голосов
/ 03 октября 2013

Ваша проблема связана с XSD.svcutil не поддерживает ограничения внутри тега complexContent: http://msdn.microsoft.com/en-us/library/ms733112.aspx

MSDN говорит, что это действительно запрещено:

enter image description here

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