我有一个基类 MyBase
的对象数组。其中一些对象是派生类的实例,因此当我尝试使用 System.Xml.Serialization.XmlSerializer
序列化此数组时,它失败并提示派生类:System.InvalidOperationException: The type DerivedClass 不是预期的。使用 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);
}
}
关于c# - 如何告诉 System.Xml.Serialization.XmlSerializer 只序列化基类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10126927/