Gibt es eine Möglichkeit, die Eigenschaften einer Schnittstelle mit Rtti zu erkunden?Delphi Rtti: Eigenschaften von Schnittstellen erforschen?
Der folgende Code funktioniert nicht:
procedure ExploreProps;
var
Ctx: TRttiContext;
RttiType: TRttiType;
RttiProp: TRttiProp;
begin
RttiType := Ctx.GetType(TypeInfo(IMyInterface));
for RttiProp in RttiType.GetProperties do
Writeln(RttiProp.ToString);
end;
Hat jemand eine Lösung, wie diese richtig zu tun?
Ok TInterfacedObject, aber ein Schnittstellen-Methoden zu erforschen funktioniert auch nicht ... Nur ersetzt die for-Schleife mit RtttiType.GetMethods, immer noch keine Ergebnisse. –
@Christian: Ich habe mir gerade den Code für das RTTI-System angeschaut, und viele Schnittstellen in den Standardbibliotheken sind eingerichtet, für die keine RTTI generiert wurde. Ich bin mir nicht sicher, was die Regeln sind, um Extended RTTI für Interface-Typen zu generieren, da es sich von der Generierung von Extended RTTI für Klassen oder Datensätze unterscheidet. Vielleicht könnten Barry Kelly oder Allen Bauer diese Frage beantworten? –
Für einen Schnittstellentyp muss '{M +}' angewendet werden, damit 'TRttiType.GetMethods()' die Methoden der Schnittstelle melden kann. –