Ein ganz, ganz wichtiger Denkfehler: Ohne Dynamic Packages gilt, dass
TComponent
der
IDE nicht das selbe
TComponent
der Bibliothek ist. Das heißt, für eine Komponente, die in der
IDE instantiiert wird, aber in einer
DLL implementiert ist, wird
is TComponent
innerhalb der
IDE nie
true
zurück geben.
Aber ist das nicht eher ein Implementierungsdetail? Könnte man nicht eine ID aus Klasse,
Package und ggf. Versionsnummer bilden und diese in der Klasse als Metainformation ablegen? Dann sollte man die Gleichheit bzw. Kompatiblität auch überprüfen können, wenn die Klassen nicht an der selben Stelle im Speicher stehen.
So ähnlich macht man es ja bei Interfaces mit den GUIDs auch. Prinzipiell sollte das doch auch bei Klassen funktionieren, oder nicht?
Ein Problem sehe ich nur, wenn verschiedene Packages von unterschiedlichen Versionen eines gemeinsam genutzten Packages ausgehen. Aber das dürfte dann bei dynamischen Packages ebenfalls Probleme geben, denke ich mal.