В настоящее время мы разрабатываем приложение с помощью XmlSerializer из .NET Framework.
Вот структура наших классов:
[XmlInclude(typeof(TimeLineMediaClass))]
[XmlInclude(typeof(ImageMediaClass))]
public abstract class MediaClass
{
public string filename { get; set; }
public string maintitle { get; set; }
public string subtitle { get; set; }
public Type typeOfMedia { get; set; }
}
[XmlInclude(typeof(AudioMediaClass))]
[XmlInclude(typeof(VideoMediaClass))]
public abstract class TimeLineMediaClass : MediaClass
{
public string title { get; set; }
public TimeSpan length { get; set; }
public string genre { get; set; }
}
public class AudioMediaClass : TimeLineMediaClass
{
public string artist { get; set; }
}
public class VideoMediaClass : TimeLineMediaClass
{
public string director { get; set; }
public string studios { get; set; }
}
public class ImageMediaClass : MediaClass
{
public string width { get; set; }
public string height { get; set; }
}
Несколько списков различных типов добавляются в список, и это то, что мы хотим сериализовать.
Вот как создается сериализатор:
XmlSerializer serializer = new XmlSerializer(typeof(List<MediaClass>));
Но когда мы запускаем программу и пытаемся сериализоваться, выдается исключение, утверждающее, что «AudioMediaClass не ожидался».
РЕДАКТИРОВАТЬ: В моем коде не хватает нескольких вещейпредоставлена.Я добавил некоторые исправления в это;подробнее в комментариях.