为什么要使用前缀ArrayOf返回类对象数组?

问题描述 投票:0回答:1

我有一个正在生成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>
c# asp.net soap wsdl soap-client
1个回答
0
投票

旨在使wsdl定义语言独立。使用不同编程语言编写的客户端可能会使用WCF服务。可能用不同的数据结构表示。即使在.net中,您也可以将此数据作为数组或列表使用。为了支持它,在WSDL模式中将数组定义为名为complexTypeArrayOfXXX。客户端代码生成器应该能够使用此代码并将其转换为正确的类型定义。

在附加问题后更新:根据WSDL规范,数组类型应命名为ArrayOfXXX。参见https://www.w3.org/TR/wsdl.html#_types

[如果进一步检查WSDL,您将看到ArrayOfDT_PM被定义为sequence元素的DT_PM,其中unbounded个最大出现次数。这意味着将在生成客户端代码时将其ArrayOfDT_PM视为DT_PM元素的列表/数组。这是期望的结果。

© www.soinside.com 2019 - 2024. All rights reserved.