В настоящее время мы разрабатываем приложение с использованием XmlSerializer из платформы .NET.XmlSerialization не будет работать
Вот структура наших классов:
[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 не ожидается».
EDIT: В коде, который я предоставил, было несколько вещей. Я добавил некоторые исправления; подробнее в комментариях.
Это, по-видимому, проблема с пространством имен xml (xmlns). Вы используете xmlns в любом месте атрибута. Если да, удалите его и посмотрите, работает ли он –
Где находится ImageMediaClass? –
Эй, Джон, ты решаешь свою проблему? –