【发布时间】:2013-10-21 18:33:57
【问题描述】:
我正在尝试序列化这个类:
[XmlRoot("ArrayOfEvent")]
public class EventList
{
public EventList()
{
}
public EventList(IEnumerable<Event> items)
{
Items = items;
}
[XmlArray("")]
public IEnumerable<Event> Items { get; set; }
}
这是EventList.Items中包含的Event类:
public class Event
{
[XmlElement]
public string ID { get; set; }
[XmlElement]
public string Title { get; set; }
[XmlElement]
public string Description { get; set; }
[XmlElement]
public string Location { get; set; }
[XmlElement]
public DateTime? StartTime { get; set; }
[XmlElement]
public DateTime? EndTime { get; set; }
[XmlElement]
public bool? AllDay { get; set; }
}
这是发生错误的地方:
public static XmlDocument ToXmlDocument<T>(T obj)
{
var xmlDocument = new XmlDocument();
var nav = xmlDocument.CreateNavigator();
if (nav != null)
{
using (var writer = nav.AppendChild())
{
var ser = new XmlSerializer(typeof(T));
ser.Serialize(writer, obj); //throws exception
}
}
return xmlDocument;
}
XmlSerializer 在调用Serialize() 时给了我这个错误:
The type Domain.EventList was not expected.
Use the XmlInclude or SoapInclude attribute to specify types that are not
known statically.
我尝试在EventList 类和Event 类上使用[XmlInclude(typeof(EventList))],但这些想法都不起作用。我不知道还能做什么。
有人熟悉这个问题吗?我该如何解决?提前致谢。
【问题讨论】:
-
也许是个愚蠢的评论,但你使用了 [Serializable] 属性?
-
@gleng
XmlSerializer对[Serializable]一点也不感兴趣 -
@gleng 是的,我确实尝试过,但没有效果。
标签: c# xml serialization xml-serialization