这可以。例如以下 c# 合同:
[DataMember]
public List<CompositeType> StringValue
{
get { return stringValue; }
set { stringValue = value; }
}
将在 wsdl 中显示为这样的 xml 架构:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://schemas.datacontract.org/2004/07/" elementFormDefault="qualified" targetNamespace="http://schemas.datacontract.org/2004/07/">
<xs:complexType name="CompositeType">
<xs:sequence>
<xs:element minOccurs="0" name="BoolValue" type="xs:boolean"/>
<xs:element minOccurs="0" name="StringValue" nillable="true" type="tns:ArrayOfCompositeType"/>
</xs:sequence>
</xs:complexType>
<xs:element name="CompositeType" nillable="true" type="tns:CompositeType"/>
<xs:complexType name="ArrayOfCompositeType">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="CompositeType" nillable="true" type="tns:CompositeType"/>
</xs:sequence>
</xs:complexType>
<xs:element name="ArrayOfCompositeType" nillable="true" type="tns:ArrayOfCompositeType"/>
</xs:schema>
所以这只是消费者的数组。当然,如果您的目标是与特定客户端堆栈的互操作性,您应该主动验证互操作性。