Serializando y restaurando una clase desconocida

Un proyecto base contiene una clase base abstracta Foo. En proyectos de clientes separados, hay clases que implementan esa clase base.

Me gustaría serializar y restaurar una instancia de una clase concreta llamando a algún método en la clase base:

// In the base project:
public abstract class Foo
{
    abstract void Save (string path);
    abstract Foo Load (string path);
}

Se puede suponer que en el momento de la deserialización, todas las clases necesarias están presentes. Si es posible de alguna manera, la serialización debe hacerse en XML. Hacer posible que la clase base implemente IXmlSerializable es posible.

Estoy un poco atrapado aquí. Si mi comprensión de las cosas es correcta, entonces esto solo es posible agregando una[XmlInclude(typeof(UnknownClass))] a la clase base para cada clase de implementación, ¡pero las clases de implementación son desconocidas!

¿Hay alguna forma de hacer esto? No tengo experiencia con la reflexión, pero también agradezco las respuestas que la utilicen.

Editar El problema esDelawarserializing. Solo serializar sería algo fácil. : -)

Respuestas a la pregunta(9)

Su respuesta a la pregunta