Базовый проект содержит абстрактный базовый класс Foo. В отдельных клиентских проектах существуют классы, реализующие этот базовый класс.Сериализация и восстановление неизвестного класса
Я хотел бы сериализации и восстановить экземпляр конкретного класса, вызвав некоторый метод в базовом классе:
// In the base project:
public abstract class Foo
{
abstract void Save (string path);
abstract Foo Load (string path);
}
Можно предположить, что во время десериализации все необходимые классы присутствуют , Если возможно, каким-либо образом, сериализация должна выполняться в XML. Возможна реализация базового класса IXmlSerializable.
Я немного застрял здесь. Если мое понимание вещей верное, то это возможно только путем добавления [XmlInclude(typeof(UnknownClass))]
к базовому классу для каждого класса реализации, но классы реализации неизвестны!
Есть ли способ сделать это? У меня нет опыта с размышлениями, но я также приветствую ответы, используя его.
Редактировать: Проблема De сериализация. Просто сериализация была бы легкой. :-)
Реализовать это действительно старый, но выглядит как отличное решение. Просто интересно, как использовать функцию FromXml, поскольку она не совсем ясна: «T src» не используется и требует создания экземпляра класса. Устранение этого приводит к тому, что компилятор пытается понять, что такое T. –