XmlSerialisieren Sie eine benutzerdefinierte Sammlung mit einem Attribut

Ich habe eine einfache Klasse, die von Collection erbt und einige Eigenschaften hinzufügt. Ich muss diese Klasse in XML serialisieren, aber der XMLSerializer ignoriert meine zusätzlichen Eigenschaften.

Ich nehme an, dies liegt an der speziellen Behandlung, die XMLSerializer ICollection- und IEnumerable-Objekte erteilt. Wie geht das am besten?

Hier ist ein Beispielcode:

using System.Collections.ObjectModel;
using System.IO;
using System.Xml.Serialization;

namespace SerialiseCollection
{
    class Program
    {
        static void Main(string[] args)
        {
            var c = new MyCollection();
            c.Add("Hello");
            c.Add("Goodbye");

            var serializer = new XmlSerializer(typeof(MyCollection));
            using (var writer = new StreamWriter("test.xml"))
                serializer.Serialize(writer, c);
        }
    }

    [XmlRoot("MyCollection")]
    public class MyCollection : Collection<string>
    {
        [XmlAttribute()]
        public string MyAttribute { get; set; }

        public MyCollection()
        {
            this.MyAttribute = "SerializeThis";
        }
    }
}

Dies gibt das folgende XML aus (Hinweis: MyAttribute fehlt im MyCollection-Element):

<?xml version="1.0" encoding="utf-8"?>
<MyCollection xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <string>Hello</string>
    <string>Goodbye</string>
</MyCollection>

Was ichwolle ist

<MyCollection MyAttribute="SerializeThis" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <string>Hello</string>
    <string>Goodbye</string>
</MyCollection>

Irgendwelche Ideen? Je einfacher desto besser. Vielen Dank

Antworten auf die Frage(10)

Ihre Antwort auf die Frage