Используйте атрибут XmlInclude или SoapInclude, чтобы указать типы, которые не известны статически.
У меня очень странная проблема при работе с .NET XmlSerializer. Возьмем следующие примеры классов: public class Order { public PaymentCollection Payments { get; set; } //everything else is serializable (including other collections of non-abstract types) } public class PaymentCollection :...