Je veux créer une structure comme:Noms de types d'éléments polymorphes utilisant XmlInclude ..?
<root>
<items>
<myns:a s="a"/>
<b s="a"/>
</items>
</root>
Lorsque les éléments de racine sont descendant d'une classe de base commune. Je ne peux tout simplement pas le faire fonctionner. L'extrait suivant crée
<root>
<items>
<Base xsi:type="A" s="a"/>
<Base xsi:type="B" s="a"/>
</items>
</root>
[Serializable]
[XmlInclude(typeof(A))]
[XmlInclude(typeof(B))]
public class Base
{
}
[Serializable]
public class A : Base
{
public string a = "a";
}
[Serializable]
public class B : Base
{
public string b = "b";
}
[Serializable]
public class Root
{
public List<Base> items = new List<Base>();
}
Si j'utilise l'attribut XmlType, je peux changer le xsi: nom du type, mais pas le nom de balise. Je souhaite également utiliser un espace de noms personnalisé sur l'une des balises, mais si j'ajoute un espace de nom à XmlType, un message d'erreur s'affiche indiquant que le type est introuvable et XmlInclude doit être ajouté ..
c'est en fait assez simple, je ne pouvais pas savoir comment ..
Nice! Je ne savais pas que j'utilise plusieurs XmlArrayItem. Cela m'a également permis de supprimer le XmlInclude de la classe de base. Merci! – simendsjo
n'était pas au courant de cet attribut, merci! –
C'était exactement ce que je cherchais! – coldandtired