OK, abgesehn davon, daß virtual meist besser geeignet ist, als dynamic ...
Im Prinzip geht es doch beim
OOP um Erweiterung/Vervollständigung?
Siehe TStrings oder TStream.
Diese Basisklassen stellen eine allgemeingültige Schnittstelle zur Verfügung.
Hinter den Methoden steckt eine gewisse Funktionalität und die nachfahren überschreiben nun diese Methoden, um die spezifischen Anforderungen des jeweiligen Zielsystems bereitzustellen.
Wenn ich mir dieses LSP so durchlese, dann bekomm ich das Gefühl, das weder Reintroduce, Virtual, Dynamic, noch Override erlaubt seien.
Also es dürften keine Funktionen verdeckt oder überschrieben werden.
Du könntest also nur noch Klassen um neue andersbenamte Methoden erweitern und dürftest keine der Vorgängerfunktionen verändern.
Und schon hast du mit der
OOP ein Problem, denn sowas wie mit TStream und TStrings wäre nicht möglich. (außer bei den Interfaces)