C# 列表的Xml序列化,而不指定所有派生类型

C# 列表的Xml序列化,而不指定所有派生类型,c#,xml,serialization,xml-serialization,derived-class,C#,Xml,Serialization,Xml Serialization,Derived Class,假设我有一个包含IComponent接口实例的容器。然后我有许多实现这个接口的类,例如ComponentA、ComponentB、…、ComponentY和ComponentZ。现在,我想对所有派生类型使用Xml序列化对其进行反序列化。我知道可以使用XmlArrayItem列出所有派生类: public class Xyz { [XmlArray("Array")] [XmlArrayItem(typeof(ComponentA))] [XmlArrayItem(type

假设我有一个包含IComponent接口实例的容器。然后我有许多实现这个接口的类,例如ComponentA、ComponentB、…、ComponentY和ComponentZ。现在,我想对所有派生类型使用Xml序列化对其进行反序列化。我知道可以使用XmlArrayItem列出所有派生类:

public class Xyz
{
    [XmlArray("Array")]
    [XmlArrayItem(typeof(ComponentA))]
    [XmlArrayItem(typeof(ComponentB))]
    // ... others
    [XmlArrayItem(typeof(ComponentY))]
    [XmlArrayItem(typeof(ComponentZ))]
    public List<IComponent> Components;
}
但这是不灵活的——我不想对每一个派生类型都这样做,对许多派生类型来说这真的很痛苦。有没有一种方法可以在不指定所有派生类型的情况下实现这一点