2010-07-08 5 views
0

J'ai une situation dans laquelle je dois transmettre une liste d'objets à mon service. Les objets doivent être de type ELEMENT. J'ai mon interface élément défini comme siUtilisation de KnowTypeAttribute dans le service WCF

public interface IElement{ } 

Ensuite, j'ai mes DataContracts hériter de cette classe IElement Comme si. . . .

[KnownType(typeof(Common.IElement))] 
[DataContract] 
public abstract class IPet : IElement 
{.....} 

J'ai aussi un attribut KnownType sur mon interface de service comme si

[ServiceContract(Name="Pets", SessionMode = SessionMode.Allowed)] 
[ServiceKnownType(typeof(Memberships.PetServiceUser))] 
[ServiceKnownType(typeof(.Common.IElement))] 
[DeliveryRequirements(RequireOrderedDelivery=true)] 
public interface IPetService {.....} 

Le problème est du côté client, le type IElement n'est pas disponible sur désérialisation des types de services sur le client. Une idée de ce que je peux faire de mal ici et comment je peux corriger cela s'il vous plait?

Aucun

Répondre

0

Je ne suis pas à 100 pour cent sûr que je comprends tout ce que vous essayez de faire, mais il semble à l'envers pour moi. La façon habituelle d'utiliser l'attribut KnownType est de décorer le type de base avec les types dérivés. Quelque chose du genre:

[DataContract] 
[KnownType(typeof(Pet))] 
[KnownType(typeof(... 
... 
public class Element: IElement 
{ 
.... 
Questions connexes