XmlSerializer сериализует общий список интерфейсов

Я пытаюсь использовать XmlSerializer для сохранения списка (T), где T - интерфейс. Сериализатору не нравятся интерфейсы. Мне любопытно, есть ли простой способ легко сериализовать список разнородных объектов с помощью XmlSerializer. Вот что я собираюсь сделать:

    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();    
    }
12
задан John Saunders 28 August 2014 в 22:28
поделиться