XmlSerializer душит интерфейсы.Таким образом, вы можете преобразовать его в массив или конкретный List<T>
перед сериализацией.Также вы должны указать абсолютно известные типы , потому что это object[]
просто не будет работать.Сериализатор должен заранее знать все типы, с которыми вы будете иметь дело.Таким образом, он будет выдавать информацию о типе в результирующий XML:
var data = list.ToArray();
var knownTypes = new[] { typeof(Foo), typeof(Bar) };
var serializer = new XmlSerializer(data.GetType(), knownTypes);
serializer.Serialize(someStream, data);
Или, если вы не хотите беспокоиться обо всем этом, и просто получите некоторое удобочитаемое постоянство для ваших объектов, вы можете использовать Json:
var serializer = new JavaScriptSerializer();
string json = serializer.Serialize(list);
И если вас не волнует удобочитаемость, двоичный сериализатор должен подойти.