Возможный дубликат:
Как сериализовать 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>
при сериализации/десериализации".