Ja, das geht so. Wir sind dabei aber einen Schritt weiter gegangen und haben Wrapper gebaut. So gibt es in der
DLL und in der Anwendung jeweils eine Klasse, die Interfaces mit beliebigen Parametern gegenseitig, aber auch innerhalb der
DLL oder Anwendung abrufen kann.
Dafür gibt es eine Registrierungsroutine in der
DLL, die in einer separaten
Unit steht. Es reicht daher diese
Unit in die
DLL einzubinden. Dann findet die Hostanwendung diese exportierte Funktion und übergibt an diese das Host-Interface. Darüber wird dann auch ein Client-Interface der
DLL übergeben.
Und nun kann man darüber generisch nach einem bestimmten Interface-Typ fragen und Parameter mitgeben. Die Plugin-Klasse holt sich aus dem generischen Typ die
GUID und fragt mit dieser
GUID über das Interface die Hostanwendung nach einer passenden Instanz usw.
Beispiel:
Delphi-Quellcode:
IntParam := TParam<Integer>.Create(42);
IntfRef := TApp.Get<ITestPlugin>(IntParam);