Tout d'abord, vous avez besoin de mettre le [DataContract]
sur toutes les classes que vous voulez avoir sérialisé et désérialisé par WCF - il est pas héritera automatiquement une!
[DataContract]
class Parent
{
.....
}
[DataContract]
class Child : Parent
{
.....
}
Si vous faites affaire avec des collections de choses, alors vous devrez peut-être vérifier dans le CollectionDataContract
:
[CollectionDataContract]
[KnownType(typeof(Parent))]
[KnownType(typeof(Child))]
public class CustomCollection : List<Parent>
{
}
En outre, WCF et SOA en général sont tout à fait un peu différent de la POO et don pas gérer l'héritage tout aussi bien. Vous devrez probablement mettre des attributs [ServiceKnownTypes]
ou [KnownType]
sur vos contrats de service dans les endroits où vous souhaitez utiliser et prendre en charge le polymorphisme.
Donc, si vous avez une méthode de service qui accepte un Parent
, mais devrait également être en mesure d'accepter une instance Child
aussi bien, alors vous avez besoin pour décorer la méthode avec l'attribut [KnownType]
de rendre ces informations disponibles à WCF. Voir le MSDN Documentation sur l'attribut KnownType ou consultez cet autre SO question sur le sujet.
Marc
mis à jour ma réponse avec le CollectionDataContract - Check it out –