我有一个基类MyBase
的对象数组。其中一些对象是派生类的实例,因此当我尝试使用System.Xml.Serialization.XmlSerializer
序列化此数组时,它会因为派生类的抱怨而失败: System.InvalidOperationException:不期望DerivedClass类型。使用XmlInclude或SoapInclude属性指定静态未知的类型。
我不想序列化派生类,我绝对不希望将[XmlIgnore()]
放在派生类中(或基类中的[XmlInclude()]
),就此而言! / p>
有没有办法告诉XmlSerializer
仅为此类成员序列化基础?
[XmlElement("Items")]
public MyBase[] Items
{
get
{
return items.ToArray();
}
set
{
items = new HashSet<MyBase>(value);
}
}
答案 0 :(得分:1)
您可以对项目集合执行Linq查询,过滤类型:
[XmlElement("Items")]
public MyBase[] Items
{
get
{
return items.Where(item => item.GetType() == typeof(MyBase)).ToArray();
}
set
{
items = new HashSet<MyBase>(value);
}
}