Einzelnen Beitrag anzeigen

Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Sprach-Feature wird nicht unterstützt: 'Benutzerdefiniertes Attribut

  Alt 9. Okt 2013, 13:56
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.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat