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

Foi útil?

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
{
....
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top