【发布时间】:2012-03-06 14:45:40
【问题描述】:
我们目前正在使用 .NET 框架中的 XmlSerializer 开发应用程序。
这是我们类的结构:
[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; }
}
将几种不同类型的媒体添加到一个List中,这就是我们要序列化的内容。
这就是序列化器的实例化方式:
XmlSerializer serializer = new XmlSerializer(typeof(List<MediaClass>));
但是当我们启动程序并尝试序列化时,会抛出一个异常,指出“AudioMediaClass is not expected”。
编辑:我提供的代码中缺少一些内容。我在其中添加了一些更正;更多细节见 cmets。
【问题讨论】:
-
这似乎是 xml 命名空间问题 (xmlns)。您是否在属性中的任何位置使用 xmlns。如果是,请删除它并查看它是否有效
-
ImageMediaClass 在哪里?
-
嘿约翰,你的问题解决了吗?
-
感谢两位的回答。关于“TimeLineMediaClass”的拼写错误和缺少的“ImageMediaClass”,这是因为我手动输入了它们,因为我没有将它们包含在复制粘贴中。我在上面做了适当的更正。抱歉回复晚了,我有点忙。
-
关于 Dipesh Bhatt 的
xmlns建议,我们不使用此功能。
标签: c# .net wpf xml serialization