我有一个正在生成wsdl的Web服务。
具有类和功能。
public DT_PM[] EndSI_PM(System.IAsyncResult asyncResult) {
object[] results = this.EndInvoke(asyncResult);
return ((DT_PM[])(results[0]));
}
但是wsdl将其创建为
ArrayOfDT_PM
和
<s:element name="SI_PM" type="tns:ArrayOfDT_PM"/>
<s:complexType name="ArrayOfDT_PM">
<s:sequence>
<s:element minOccurs="0" maxOccurs="unbounded" name="DT_PM" nillable="true">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" form="unqualified" name="ST" type="s:string"/>
</s:sequence>
</s:complexType>
</s:element>
</s:sequence>
</s:complexType>
旨在使wsdl定义语言独立。使用不同编程语言编写的客户端可能会使用WCF服务。可能用不同的数据结构表示。即使在.net中,您也可以将此数据作为数组或列表使用。为了支持它,在WSDL模式中将数组定义为名为complexType
的ArrayOfXXX
。客户端代码生成器应该能够使用此代码并将其转换为正确的类型定义。
在附加问题后更新:根据WSDL规范,数组类型应命名为ArrayOfXXX
。参见https://www.w3.org/TR/wsdl.html#_types。
[如果进一步检查WSDL,您将看到ArrayOfDT_PM
被定义为sequence
元素的DT_PM
,其中unbounded
个最大出现次数。这意味着将在生成客户端代码时将其ArrayOfDT_PM
视为DT_PM
元素的列表/数组。这是期望的结果。