我正在尝试发布一个SOAP服务,其中包含一个或多次引用自身的类型。例如:
在上面的屏幕截图中,请注意ItemGroup可以包含一个到多个其他ItemGroup。我尝试了以下内容:
public class ItemGroup : List<ItemGroup>
{
public string Name { get; set; }
public string Type { get; set; }
}
但是,然后我运行应用程序,我收到以下错误:
类型'ItemGroup'是不受支持的递归收集数据合约
可以向ItemGroup添加List,但使用此服务的应用程序已请求我不这样做。
编辑:
我已经查看了上面实现的替代服务,WSDL看起来像这样:
<xs:element name="ItemGroup">
<xs:complexType>
<xs:sequence>
<xs:element name="Type" type="xs:string" />
<xs:element name="Name" type="xs:string" />
<xs:element minOccurs="0" maxOccurs="unbounded" ref="ItemGroup" />
</xs:sequence>
</xs:complexType>
答案 0 :(得分:0)
您使用了错误的课程
public class ItemGroup : List<ItemGroup>
{
public string Name { get; set; }
public string Type { get; set; }
}
上面的类是不合适的,因为它是一个循环引用,你不能从需要你已经定义的相同类的类继承。
我已经查看了soap代码,您需要2个类来定义ItemGroup
和其他类来定义包含ItemGroup
List的对象,如下所示:
public class ItemGroup
{
public string Name { get; set; }
public string Type { get; set; }
}
public class ItemGroups:List<ItemGroup>
{
}