2012-10-04 3 views
5

Gibt es eine Möglichkeit, den Xmlroot eines Objekts oder einer Klasse während der Laufzeit zu setzen?Kann ich XMLRoot über Code anstelle von Attributen angeben?

[XmlRoot("data")] 
public class MyRoot { 
    [XmlElement("bar")] 
    public List<RemoteHost> Hosts {get;set;} 
} 

Ich habe nicht die Option, die Klasse MyRoot in diesem Fall zu ändern; Daher möchte ich angeben, dass der Stammname "Daten" genannt werden soll, bevor ich das Objekt mit XmlSerializer in XML serialisieren kann.

Antwort

9

Ja! Einfach:

var serializer = new XmlSerializer(typeof(MyRoot), 
    new XmlRootAttribute("data")); 

Oder vollständiger, siehe XmlAttributeOverrides. Bei beiden müssen Sie jedoch zwischenspeichern und die Serializer-Instanz wiederverwenden, da andernfalls Baugruppen verloren gehen.

Verwandte Themen