Das Problem hatte ich ja auch schon angesprochen. IMO gibt es nur zwei Möglichkeiten: Entweder man übergibt dem Deserializer den genauen Klassentyp, wie du schon geschrieben hast. Ich kann mir aber gut vorstellen, dass man diesen oft gar nicht / nur eine Basisklasse kennt. Dann gibt es nur noch einen Weg:
Der Deserializer muss einfach annehmen können, dass jede einzelne serialisierbare Klasse schon registriert wurde, z.B. im initialization-Abschnitt der
Unit. Bei jeder Ableitung muss der Programmierer also ein RegisterClass(...) hinzufügen.