我們目前正在使用.NET框架中的XmlSerializer開發一個應用程序。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是沒有預料到」。
編輯:我提供的代碼中缺少一些東西。我在其中添加了一些更正;評論中有更多細節。
這似乎是xml名稱空間問題(xmlns)。你在屬性中的任何地方使用xmlns嗎?如果是的話,刪除它,看看它是否工作 – 2012-03-06 14:48:08
ImageMediaClass在哪裏? – 2012-03-06 14:54:53
嘿約翰,你解決了你的問題? – 2012-03-06 19:07:06