Un proyecto base contiene una clase base abstracta Foo. En proyectos de cliente separados, hay clases que implementan esa clase base.Serialización y restauración de una clase desconocida
me gustaría para 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 deserialización, todas las clases necesarias están presentes . Si es posible de alguna manera, la serialización debe hacerse en XML. Hacer que la clase base implemente IXmlSerializable es posible.
Estoy un poco atrapado aquí. Si mi comprensión de las cosas es correcta, esto solo es posible si agrego un [XmlInclude(typeof(UnknownClass))]
a la clase base para cada clase de implementación, ¡pero las clases de implementación son desconocidas!
¿Hay alguna manera de hacerlo? No tengo experiencia con la reflexión, pero también me gusta usar las respuestas.
Edit: El problema es De serialización. Solo serializar sería algo fácil. :-)
di cuenta que es muy viejo, pero parece una gran solución. Me pregunto cómo usar la función FromXml, ya que no está del todo claro: la 'T src' no se usa y requiere una clase para crear una instancia. Al eliminarlo, el compilador tiene dificultades para descubrir qué es T. –