我正在使用ServiceStack来创建Soap服务。我想创建一个包含这样结构的肥皂信封
<Items>
<Item />
<Item />
</Items>
即。一个包含相同项目序列的容器。
我很难在我的DTO课程中找出如何表达这一点。
[DataContract]
public class Item // inherit ??
{
// ??
}
[DataContract]
public class ItemListResponse : ResponseBase
{
[DataMember]
public Item[] Items { get; set; }
}
我认为它应该在WSDL中表达,就像这样
<xs:simpleType name="Item">
<xs:restriction base="xs:string" />
</xs:simpleType>
<xs:element name="Item" nillable="true" type="tns:Item" />
<xs:complexType name="Items">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="Items" nillable="true" type="tns:Item" />
</xs:sequence>
</xs:complexType>
<xs:element name="Items" nillable="true" type="tns:Items" />
但我不知道如何让我的Item
类表现得像字符串一样。我无法继承字符串,如果我在Item
中有一个字符串成员,那么这就是我需要的DTO结构。
我应该如何构建我的DTO课程?
谢谢
答案 0 :(得分:2)
尝试使用CollectionDataContract
,例如:
[CollectionDataContract(ItemName = "Item")]
public class ArrayOfItem : List<Item>
{
public ArrayOfItem() { }
public ArrayOfItem(IEnumerable<Item> collection) : base(collection) { }
public ArrayOfItem(params Item[] collection) : base(collection) { }
}