Wie setze ich XmlArrayItem Element name für eine Liste<Custom> Umsetzung?
Ich möchte erstellen Sie eine benutzerdefinierte XML-Struktur wie folgt:
<Hotels>
<Hotel />
</Hotels>
Habe ich eine Implementierung von List
nur in der Lage sein, dies zu tun. Mein code ist wie folgt:
[XmlRootAttribute(ElementName="Hotels")]
public class HotelList: List<HotelBasic>
Weil die Klasse, die die Liste hält, wird nicht benannt Hotel
aber HotelBasic
meine xml ist wie
<Hotels>
<HotelBasic />
</Hotels>
Wie kann ich dieses Problem beheben ohne Implementierung ISerializable
oder IEnumerable
?
InformationsquelleAutor der Frage Odys | 2011-11-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vorausgesetzt, Sie verwenden
XmlSerializer
wenn alle, die Sie tun möchten, ist ändern Sie, wie IhrHotelBasic
Klasse serialisiert wird, können SieXmlTypeAttribute
:Wenn Ihr
HotelList
Klasse serialisiert als:InformationsquelleAutor der Antwort madd0
erzeugen sollte:
InformationsquelleAutor der Antwort abatishchev
Ich denke madd0 zeigt die einfachste Möglichkeit für Sie, hier, aber nur der Vollständigkeit halber... ich persönlich empfehle nicht die "serialisieren der Liste als root-Objekt" - aus verschiedenen Gründen (darunter: ich habe gesehen, diese Attribute nicht funktionieren, zumindest auf der Plattform - gewesen sein könnte, CF oder SL, kann mich nicht erinnern). Stattdessen rate ich immer mit einem custom root Typ:
Diese haben die gleichen xml-Struktur, und erlaubt eine größere Flexibilität (Sie können fügen Sie die anderen Attribute /Elemente an der Wurzel), und nicht Backen
List<T>
in Ihrer Art Modell (lieber Kapselung über Vererbung, etc).InformationsquelleAutor der Antwort Marc Gravell