我想知道如何通过WCF提供此对象:
[DataContract]
public class A : IA
{
[DataMember]
public List<IB> ListOfB { get; set; }
}
public interface IA
{
List<IB> ListOfB { get; set; }
}
使用IB
类的B
接口。
生成的XSD是:
<xs:complexType name="A">
<xs:sequence>
<xs:element xmlns:q1="http://schemas.microsoft.com/2003/10/Serialization/Arrays" minOccurs="0" name="ListOfB" nillable="true" type="q1:ArrayOfanyType"/>
</xs:sequence>
</xs:complexType>
<xs:element name="A" nillable="true" type="tns:A"/>
</xs:schema>
ArrayOfanyType - &gt;我觉得它无法正常工作,因为IB
无法标记为[DataContract]
。
答案 0 :(得分:0)
对于序列化程序来解释您的合同,它们需要用具体类型而不是接口来表达。如果您将代码更改为此(并使用相应的DataContract
和DataMember
属性注释B类,那么您应该很高兴。
[DataContract]
public class A
{
[DataMember]
public List<B> ListOfB { get; set; }
}