Da die Bestimmung zur Laufzeit etwas aufwändig ist und auch der dyn. Methodenaufruf, würde ich dir (nachdem ich jetzt eine Nacht darüber geschlafen habe) aber einen anderen Weg vorschlagen:
Überleg dir ob es nicht sinnvoller wäre, eine zweite Vererbungslinie mit Interfaces einzuführen.
Dann musst du innerhalb deines Controllers die tatsächliche Modellklasse nicht bis ins kleinste Detail kennen, aber die Modellklasse muss das Interface XYZ implementieren um vom Controller erkannt zu werden. Wie die einzelenen Methoden des Controllers dann auf das Modell reagieren bestimmst du je Klasse.
Ich nehme mal an du willst ein austauschbares Modell, damit du unterschiedlichste Tabellen im ALV (Viewer) anzeigen kannst, wobei die Steuerung (Controller) ebenfalls generisch erfolgen soll (Hinzufügen/Ändern/Löschen/Key-Prüfungen usw.).
Da würde ich das Modell wirklich nur als Interface sehen, dass du je Datenquelle (DB-Tabelle/Interne Tabelle/Whatever)
Darauf aufbauend kannst du ja dennoch eine Klassenvererbung aufsetzten. z.B. eine Grundklasse für den allgemeinen DB-Zugriff.
Ich hab sowas ähnliches auch schon umgesetzt, aber leider nicht streng nach MVC
Bei mir ist Modell und Controller in einem, wobei intern immer eine generische Tabelle mittels Sessions verwaltet wird und je nach Ableitung die Datenquelle bestimmt wird. Den Viewer hab ich da mal außen vor gelassen. Ich hab zwar einen ALV Viewer mit einigen Zusatzfunktionen, aber der ist nicht mit der Datenklasse "kombiniert" und daher kann ich beide je nach Einsatzzweck verwenden. Die Schnittstelle zwischen den Zweien ist nachwievor eine interne Tabelle wobei ich hinzufügen/Ändern/löschen im ALV immer mit einem Vorher/Nachher Vergleich ermitteln muss. Andererseits verwenden wir nur in sehr wenigen Fällen das editierbare ALV, daher war das ursprünglich kein Problem, aber inzwischen denke ich mir oft: Hätt ich doch damals ...
Ne, ist nicht so schlimm, aber dieser Vorher/Nachher vergleich wird beim ALV immer notwendig sein, da man schwer sagen kann WIE der User die Daten verändert hat. Ich denke da jetzt vor allem an STRG+Y / STRG+C /STRG+V aus einer anderen Tabelle usw.
Hoffe da waren einige Anregungen für dich dabei.
lg ADT