2009-11-12 8 views
0

I ont le graphe d'objet suivant:Différentes options pour XmlSerialization et type dérivé

public class BaseType 
{ 
} 

public class DerivedType : BaseType 
{ 
} 

Quand je passe derivedtype à XmlSerializer je dois avoir une réflexion sur la place de BaseType derivedtype. Existe-t-il un moyen de contrôler cela avec des attributs sans implémenter IXmlSerializer sur DerivedType?

+0

Vous voulez donc que les propriétés du BaseType et non de la derivedtype? – Natrium

+0

oui. c'est correct. fondamentalement notre maison orm sérialiseurs basetype, mais je veux avoir un type dérivé dans mon domaine pour le comportement et autres. Je n'ajoute pas plus de propriétés, seulement des comportements –

Répondre

0

Si vous avez le contrôle sur l'instanciation du sérialiseur, transmettez simplement un Type [] avec l'objet de type dérivé comme extraTypes. Sinon, ajoutez un

[XmlInclude(typeof(Derived))] 

à la définition de classe de base. Le résultat XML sera exactement le même que si vous aviez passé une instance de base à l'exception de l'attribut xsi: type avec le nom du type dérivé.

Je pense que c'est ce que vous demandez ...

Questions connexes