Возможный дубликат:
Как сериализовать IList <T> ?
Я хочу сериализовать класс (пусть его называют S), который содержит свойство типа IList<T>, где T - это другой класс, который я определил. Я получаю исключение, когда пытаюсь сериализовать экземпляр класса S в XML. Это понятно, поскольку XmlSerializer не знает, какой конкретный класс использовать. Есть ли способ, надеюсь, использовать атрибуты, чтобы указать, какой конкретный класс необходимо создать при сериализации/десериализации экземпляра. Моя реализация класса S создает экземпляр класса List<T>. Вот несколько примеров, иллюстрирующих мой пример:
using System;
using System.Xml.Serialization;
using System.IO;
[Serializable]
public class T { }
[Serializable]
public class S
{
public IList<T> ListOfTs { get; set; }
public S()
{
ListOfTs = new List<T>();
}
}
public class Program
{
public void Main()
{
S s = new S();
s.ListOfTs.Add(new T());
s.ListOfTs.Add(new T());
XmlSerializer serializer = new XmlSerializer(typeof(S));
serializer.Serialize(new StringWriter(), s);
}
}
Я надеюсь, что есть атрибут, который я могу разместить над определением ListOfTs, которое говорит сериализации, "предположите экземпляр List<T> при сериализации/десериализации".