Einzelnen Beitrag anzeigen

Der schöne Günther

Registriert seit: 6. Mär 2013
6.110 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

$M+, IInvokable, RTTI - Wozu?

  Alt 29. Sep 2014, 11:11
Delphi-Version: XE5
Das ist vielleicht etwas viel Text. Das liegt daran, dass ich die ganze Thematik irgendwie nicht verstehe.

Letzten Dienstag bei Embarcadero's Skill Sprint-Folge zu "AOP mit DSharp" von Nick Hodges (Aufzeichnung ist leider noch nicht hochgeladen) kam überall dieses komische IInvokable -Interface vor.

Auf die Frage, was das soll konnte mir der gute Herr Hodges keine konkrete Antwort geben. Nur dass es DSharp hier brauchen würde. Andere Frameworks wie Delphi Mocks würden sich angeblich ebenso verhalten. Aus diesem Grund würde er sogar empfehlen, Interfaces grundsätzlich allesamt von IInvokable statt IInterface abzuleiten.

Nun gut- Zum ersten mal schaue ich, was System.IInvokable überhaupt ist.

Dem Source nach nichts weiter als {$M+}IInvokable = interface(IInterface) end; {$M-} . Der Hilfe-Artikel Aufrufbare Interfaces im Überblick spricht
Zitat:
IInvokable ist nahezu identisch mit dem Basis-Interface (IInterface), mit dem Unterschied, dass dieses Interface mit der Compiler-Option {$M+} compiliert wird. Mit der Compiler-Option {$M+} wird sichergestellt, dass das Interfaces sowie alle ihre Nachkommen RTTI beinhalten.
. Danach fängt der Artikel leider an, irgendetwas wirres von Webservices zu reden.

Deswegen sieht es für mich bislang so aus:
Es gibt irgendwelche Mechanismen die noch auf die "alte" RTTI aufbauen. Diese Mechanismen brauchen eine explizite Generation dieser RTTI-Informationen für Typen mit denen sie arbeiten sollen.
Und diese Mechanismen stecken wohl in DSharp und anderswo.

Richtig soweit?
Wenn es wirklich so einfach war:
  1. Gibt es einen Compilerschalter mit den ich diese alten RTTI-Informationen zu ALLEN Typen hinzufügen kann? Die Größe der .exe wäre mir egal. Wenn es ginge, hat das einen Einfluss auf die Geschwindigkeit?
  2. Falls es keinen solchen Schalter gibt, wie füge ich explizit diese Informationen zu einem bereits vorhandenen Standardtyp (wie TProc) hinzu?
Miniaturansicht angehängter Grafiken
attendeeviewerimage005.jpg  

Geändert von Der schöne Günther (29. Sep 2014 um 11:14 Uhr) Grund: Beispiel-Screenshot des Webinars angehängt
  Mit Zitat antworten Zitat