Ich glaub, ich hab mich da ein bisschen missverständlich ausgedrückt. Die
Unit ist die gemeinsame Interface-Deklaration zwischen einem Hauptprogramm und einer
DLL. Im Hauptprogramm will ich die
GUID ja ausdrücklich als Konstante haben für QueryInterface usw.
Das kommt mir irgendwie bekannt vor... ich habe das allerdings gleich generisch gelöst. Kurzfassung:
Delphi-Quellcode:
class function TFoo.Get<T>(const AParams: IFooParams): T;
var
TypeGuid: TGuid;
begin
TypeGuid := GetTypeData(TypeInfo(T)).Guid;
Supports((Instance as TFoo).Host.GetIntfImplementation(TypeGuid, AParams), TypeGuid, Result);
end;
Sprich ich rufe diesen Getter mit dem gewünschten Interface als Typparameter und den dazu passenden Initialisierungsparametern als Methodenparametern auf. Dann hole ich mir darin die
Guid, frage beim Host an, bekomme ein Interface zurück und wandele es mit Supports in den korrekten Typ um.
So ist das nach außen komplett generisch gekapselt und ich brauche keine
GUID-Konstanten oder ähnliche Krücken.