Hatte das gleiche Problem. Wollte es auch in eigenen Units lassen und habe es wie oft im
VCL-Quellcode gelöst.
Pointer auf TObject ubergeben und Gültigkeit vorm Cast via Classname abfragen. Das ist kaum besser als untypisierte Pointer, aber ich hab' nach langem suchen auch keinen anderen Weg gefunden.