Usando KnowTypeAttribute em Serviço WCF
-
13-09-2020 - |
Pergunta
Eu tenho uma situação em que eu preciso para passar uma lista de objetos a meu serviço.Os objetos têm de ser do tipo de ELEMENTO.Eu tenho a minha Elemento de interface definido da seguinte forma
public interface IElement{ }
Então eu tenho o meu DataContracts herdar esse IElement classe assim ....
[KnownType(typeof(Common.IElement))]
[DataContract]
public abstract class IPet : IElement
{.....}
Eu também tenho um KnownType atributo na minha interface de Serviço como
[ServiceContract(Name="Pets", SessionMode = SessionMode.Allowed)]
[ServiceKnownType(typeof(Memberships.PetServiceUser))]
[ServiceKnownType(typeof(.Common.IElement))]
[DeliveryRequirements(RequireOrderedDelivery=true)]
public interface IPetService {.....}
Problema é no lado do cliente, o IElement tipo não está disponível na anulação da serialização de tipos de serviço no cliente.Alguma idéia do que posso estar fazendo de errado aqui, e como eu pode ir sobre como corrigir isso por favor?
Nenhum
Solução
Eu não estou 100 por cento certo, eu entendo tudo o que você está tentando fazer aqui, mas parece de cabeça para baixo para mim.A maneira usual de se usar o KnownType atributo é decorar o tipo de base com os tipos derivados.Algo ao longo das linhas de:
[DataContract]
[KnownType(typeof(Pet))]
[KnownType(typeof(...
...
public class Element: IElement
{
....