Comment puis-je définir le nom de l'élément XmlArrayItem pour une liste & lt; Custom & gt; la mise en oeuvre?
Je veux créer une structure XML comme suit:
<Hotels>
<Hotel />
</Hotels>
J'ai créé une mise en œuvre de List
juste pour être en mesure de le faire. Mon code est comme suit:
[XmlRootAttribute(ElementName="Hotels")]
public class HotelList: List<HotelBasic>
Parce que la classe que la Liste contient n'est pas nommé Hotel
mais HotelBasic
mon xml est comme
<Hotels>
<HotelBasic />
</Hotels>
Comment puis-je résoudre ce problème sans avoir à mettre en œuvre ISerializable
ou IEnumerable
?
source d'informationauteur Odys
Vous devez vous connecter pour publier un commentaire.
En supposant que vous utilisez
XmlSerializer
si tout ce que vous voulez faire est de changer la façon dont votreHotelBasic
classe est sérialisé, vous pouvez utiliserXmlTypeAttribute
:Lorsqu'il est utilisé avec votre
HotelList
classe, il sera sérialisé:doit produire:
Je pense que madd0 montre l'option la plus simple pour vous ici, mais juste pour être complet... personnellement je ne recommande pas le "sérialiser la liste comme la racine de l'objet" - pour diverses raisons (y compris: j'ai vu ces attributs ne pas fonctionner sur au moins sur la plate - forme pourrait avoir été des FC ou de la SL, ne me souviens pas). Au lieu de cela, je conseille toujours à l'aide d'un custom type de racine:
Cela aura la même structure xml, et permet une plus grande flexibilité (vous pouvez ajouter d'autres attributs /éléments à la racine), et ne pas cuire
List<T>
dans votre type de modèle (préférez l'encapsulation sur l'héritage, etc).