Einzelnen Beitrag anzeigen

Benutzerbild von dummzeuch
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
1.468 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

AW: Instanziierung von Interfaces

  Alt 25. Nov 2017, 09:44
Ich würde gerne Ein Interface dynamisch instanziieren. Damit meine ich: Der zu instanzierende Klassentyp kommt als String aus einer eigenen Customizing Tabelle.
Eine Möglichkeit wäre, dass sich alle Klassen, die ein Interface implementieren, irgendwo regstrieren, so dass eine Factory-Methode sie anhand des Namens instantiieren kann. In der Regel geschieht diese Registrierung durch einen Aufruf wie

Delphi-Quellcode:

ClassFactoryXY.RegisterClass('NameOfClass', TNameOfClass);
In meinem Code erfolgt die Registrierung meist in der Initialization Section der Unit, in der die Klasse deklariert wird.

Um diese Registrierungen zu speichern könnte man z.B. ein Dictionary anlegen, mit dem Namen der Klasse als Key und einem Class Pointer als Value. Ich benutze noch ein älteres Delphi, das TDictionary noch nicht kennt, und habe deshalb TStringList verwendet.

Die Instantiierung erfolgt dann duch einen Aufruf der ClassFactory wie diesen:

Delphi-Quellcode:

MyIntVariable := ClassFactoryXY.CreateInstance('NameOfClass');
Thomas Mueller
  Mit Zitat antworten Zitat