![]() |
Instanziierung von Interfaces
Hallo zusammen,
Ich würde gerne Ein Interface dynamisch instanziieren. Damit meine ich: Der zu instanzierende Klassentyp kommt als String aus einer eigenen Customizing Tabelle. Folgende Variante ist mir geläufig: Ein Case Block mit "1 : mo_Irgend_ein_Interface := TCL_Irgendeine_Implementierende_Klasse.Create" ist eine statische Geschichte die für mich nicht zielführend ist, (wenn es sich irgendwie vermeiden lässt). Warum?: Weil jedesmal wenn ich eine weitere implementierende Klasse anlege, muss ich den CASE Block erweitern. Gibt es in Delphi (Version?) eine Möglichkeit diese Instanziierung über einen String zu bewerkstelligen? Dies wäre eine viel bessere Möglichkeit. z.B: VAR lo_IFC : TIF_Irgend_Ein_Interface lv_Klassen_Name : String; lv_Klassen_Name := 'TCL_Implementierende_Klasse_A'; lo_IFC := ( lv_Klassen_Name ).Create // <- Hier ist kein Case Block notwendig. NUR, leider funktioniert dies nicht in Delphi. Ich habe es auch schon mit TYPE OF versucht, aber keine Chance. Was mache ich Falsch, bzw. geht es überhaupt und wenn ja, wie ? Gruß Levitan |
AW: Instanziierung von Interfaces
Such doch hier im Forum mal nach "Class Factory", da solltest Du ein paar Ansätze finden.
|
AW: Instanziierung von Interfaces
Zitat:
Delphi-Quellcode:
In meinem Code erfolgt die Registrierung meist in der Initialization Section der Unit, in der die Klasse deklariert wird.ClassFactoryXY.RegisterClass('NameOfClass', TNameOfClass); 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'); |
AW: Instanziierung von Interfaces
Genau, ich habe auch mein Beispiel wiedergefunden:
![]() |
AW: Instanziierung von Interfaces
Hallo zusammen,
ganz herzlichen Dank für eure Antworten. Ich denke das hilft mir weiter. :) Gruß Levitan |
AW: Instanziierung von Interfaces
Hi!
Ich würde an ein Dictionary die GUID des Interface registrieren... Und die Classe oder die Create-Methode Das kann auch eine TFunc sein, die das Interface zurück gibt. Mavarik |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:53 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz