XmlSerializer serialisieren generische Liste der Schnittstelle

Ich versuche, den XmlSerializer zu verwenden, um eine Liste (T) beizubehalten, in der T eine Schnittstelle ist. Der Serializer mag keine Schnittstellen. Ich bin gespannt, ob es mit XmlSerializer auf einfache Weise möglich ist, eine Liste heterogener Objekte zu serialisieren. Hier ist, was ich will:

    public interface IAnimal
    {
        int Age();
    }
    public class Dog : IAnimal
    {
        public int Age()
        {
            return 1;
        }
    }
    public class Cat : IAnimal
    {
        public int Age()
        {
            return 1;
        }
    }

    private void button1_Click(object sender, RoutedEventArgs e)
    {
        var animals = new List<IAnimal>
        {
            new Dog(),
            new Cat()
        };

        var x = new XmlSerializer(animals.GetType());
        var b = new StringBuilder();
        var w = XmlTextWriter.Create(b, new XmlWriterSettings { NewLineChars = "\r\n", Indent = true });
        //FAIL - cannot serialize interface. Does easy way to do this exist?
        x.Serialize(w, animals);
        var s = b.ToString();    
    }

Antworten auf die Frage(10)

Ihre Antwort auf die Frage