如何告诉 System.Xml.Serialization.XmlSerializer 只序列化基类
本文关键字:序列化 基类 XmlSerializer Serialization 何告诉 System Xml | 更新日期: 2023-09-27 18:30:49
我有一个基类MyBase
的对象数组。其中一些对象是派生类的实例,因此当我尝试使用System.Xml.Serialization.XmlSerializer
序列化此数组时,它会失败并抱怨派生类:System.InvalidOperationException:不需要派生类类型。使用 XmlInclude 或 SoapInclude 属性可以指定静态未知的类型。
我不想序列化派生类,我绝对不想[XmlIgnore()]
放在派生类中(或[XmlInclude()]
放在基类中,就此而言)!
有没有办法告诉XmlSerializer
只序列化像这样的成员的基?
[XmlElement("Items")]
public MyBase[] Items
{
get
{
return items.ToArray();
}
set
{
items = new HashSet<MyBase>(value);
}
}
您可以对项目集合执行 Linq 查询,按类型进行筛选:
[XmlElement("Items")]
public MyBase[] Items
{
get
{
return items.Where(item => item.GetType() == typeof(MyBase)).ToArray();
}
set
{
items = new HashSet<MyBase>(value);
}
}