Le titre peut être long, laissez-moi vous expliquer ce que je veux dire. Je ne vais pas vous donner le code XML avec lequel je dois travailler, mais je vais en donner un qui montre le problème auquel je suis confronté.Sérialisation XML: comment distinguer les classes utilisant le même nom d'élément mais ayant une valeur différente dans un attribut?
J'ai un fichier XML qui ressemble à ceci:
<root>
<creatures>
<creature type="mammal" name="lion">
<sound>roarr</sound>
</creature>
<creature type="bird" name="parrot">
<color>red</color>
</creature>
</creatures>
</root>
Imaginez les classes suivantes: (. Bien sûr, ce ne sont pas mes vraies classes non plus, mais vous obtenez le point)
public class Creature
{
public string Name { get; set; }
}
public class MammalCreature : Creature
{
public string Sound { get; set; }
}
public class BirdCreature : Creature
{
public string Color { get; set; }
}
Je voudrais utiliser la sérialisation XML avec des attributs de manière à ce que le sérialiseur fasse la distinction entre les types MammalCreature
et BirdCreature
par l'attribut type
.
J'ai trouvé des solutions qui peuvent faire cela en affectant l'attribut xsi:type
au nom de type que je veux, mais j'aimerais savoir s'il existe une solution réelle pour mon cas.
+1 Merci pour votre réponse! Oui, je pensais que l'implémentation d'IXmlSerializable me donnerait une solution, même si je cherchais une solution KISS. Peut-être que je vais convaincre la personne qui a créé le schéma de le modifier d'une manière prise en charge par la sérialisation XML basée sur les attributs. – Venemo
Je sais que c'est long après que cette réponse a été postée, mais j'ai quelques problèmes avec cette façon de faire les choses. – Hewins
@Hewins Ensuite, vous devriez poster une nouvelle question avec ce que vous avez fait et les problèmes exacts que vous rencontrez. –