Мне нужно сериализовать/десериализовать полиморфную иерархию, но я несколько неясен в этом формате.Множество сериализации/десериализации полиморфных объектов
Способ, которым я это определяю, каждый тип уникального объекта должен сериализоваться, начиная с «магического числа», чтобы обозначать тип, который завод позже должен десериализовать. Однако следует ли десериализацию обрабатывать отдельные классы или явно и полностью заводом?
Я думаю, что если десериализация обрабатывается отдельными классами, она будет более «элегантной» и структурированной, но учитывая, что большинство, если не все объекты наследуются от других объектов, и что эти данные должны использоваться для инициализации конструкторов базовых классов, Я немного неясен, каким образом метод-член наследующего класса сможет достичь этого, поскольку инициализация базовых классов должна предшествовать ему.
Другой способ - отделить метод десериализации от отдельных классов и переместить весь этот код на завод, но это значительно усложнит реализацию десериализации в полном обратном порядке сериализации. Это будет означать, что я должен извлечь все данные, необходимые для полной цепочки наследования для каждого класса, поместить их в стек и использовать для вызова соответствующих конструкторов.
Есть мыслит по теме?