【问题标题】:WCF and IList of ISomethingISomething 的 WCF 和 IList
【发布时间】:2013-01-10 01:29:33
【问题描述】:

我想知道如何通过 WCF 使这个对象可用:

[DataContract]
public class A : IA
{
    [DataMember]
    public List<IB> ListOfB { get; set; } 
}

public interface IA
{
    List<IB> ListOfB { get; set; }
}

带有IBB的接口。

生成的 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 -> 我觉得它不能工作,因为IB 不能被标记为[DataContract]

【问题讨论】:

标签: c# wcf ilist


【解决方案1】:

为了让序列化程序解释您的合同,它们需要用具体类型而不是接口来表达。如果您将代码更改为此(并使用适当的 DataContractDataMember 属性注释 B 类,那么您应该很高兴。

[DataContract]
public class A
{
    [DataMember]
    public List<B> ListOfB { get; set; } 
}

【讨论】:

  • 当然。但是我仍然需要我的A 来获得IB 而不是IB 的直接列表(这些对象是共享的,A 实现IAIA 不应该知道B,而只是IB ...
  • @FrancoisB。我知道这就是你想要的,但你不能那样做。合约需要基于具体类型。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-02
相关资源
最近更新 更多