【发布时间】:2012-04-12 15:35:51
【问题描述】:
我有一个基类MyBase 的对象数组。其中一些对象是派生类的实例,因此当我尝试使用System.Xml.Serialization.XmlSerializer 序列化此数组时,它会因对派生类的抱怨而失败:System.InvalidOperationException:不希望使用 DerivedClass 类型。使用 XmlInclude 或 SoapInclude 属性指定静态未知的类型。
我不想序列化派生类,我绝对不想将[XmlIgnore()] 放在派生类中(或者[XmlInclude()] 放在基类中,就此而言)!
有没有办法告诉XmlSerializer只为像这个这样的成员序列化基数?
[XmlElement("Items")]
public MyBase[] Items
{
get
{
return items.ToArray();
}
set
{
items = new HashSet<MyBase>(value);
}
}
【问题讨论】:
-
是否将类型传递给 xmlserializer 构造函数?
-
我确实尝试过这个,但无法让它工作: List
derivedTypes = new List (); foreach (MyBase item in items) { derivedTypes.Add(item.GetType()); } XmlSerializer 序列化器 = new XmlSerializer(typeof(RootItem), derivedTypes.ToArray());
标签: c# xmlserializer base-class