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

我有一个正在生成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>
li74686771 回答:为什么要使用前缀ArrayOf返回类对象数组?

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

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

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

本文链接:https://www.f2er.com/3161878.html

大家都在问