在WCF服务</supertype>上返回List <supertype>

时间:2009-11-30 20:46:53

标签: wcf generics service

我正在尝试获取一个WCF服务来返回一个List,该List包含从A继承但在服务返回列表时“基础连接意外关闭”的类实例。

我有以下

  [DataContract]
  [Serializable]
  public class A { ... }

  [DataContract]
  [Serializable]
  public class B : A { ... }

  [DataContract]
  [Serializable]
  public class C : A { ... }

然后我将服务定义为

[ServiceContract( NameSpace = "Name.Space" )]
public interface I
{
    [OperationContract]
    List<A> GetList();
}

如果我尝试按如下方式返回列表

  List<A> list = new List<A>()
  {
    new B(),
    new C()
  }

我在代理类中遇到上述错误。

如果更改服务以返回列表&lt; B&gt;并且只是将B添加到它它返回正常,所以这使我相信它与WCF与子类型有困难。

我尝试过添加

  [ServiceKnownType( typeof( B ) )]
  [ServiceKnownType( typeof( C ) )]

对A的班级定义,无济于事。

那么,是否可以通过WCF返回同一列表中的子类型列表?

如果是这样,我错过了什么/做错了什么?

提前感谢您提供的任何帮助

1 个答案:

答案 0 :(得分:3)

啊,我似乎应该使用KnownType而不是ServiceKnownType

抱歉打扰

此致