Возврат списка <SuperType>в службе WCF - PullRequest
0 голосов
/ 30 ноября 2009

Я пытаюсь получить службу WCF, которая возвращает список, содержащий экземпляры классов, которые наследуются от 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()
  }

Я получаю вышеуказанную ошибку в прокси-классе.

Если изменить службу, чтобы она возвращала List , и просто добавить к ней Bs, то она вернется нормально, поэтому я думаю, что это связано с тем, что WCF испытывает трудности с подтипами. Я попытался добавить

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

К определению класса A, безрезультатно.

Итак, можно ли вернуть список подтипов в том же списке через WCF?

Если так, что я пропускаю / делаю неправильно?

Заранее благодарим за любую помощь, которую вы можете оказать

1 Ответ

3 голосов
/ 01 декабря 2009

Ах, похоже, мне следовало использовать KnownType, а не ServiceKnownType

Извините за беспокойство

Привет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...