Einzelnen Beitrag anzeigen

Benutzerbild von Kraisel
Kraisel

Registriert seit: 19. Mär 2012
Ort: Bochum-Linden
64 Beiträge
 
Delphi 12 Athens
 
#1

Methodenliste für Interface

  Alt 12. Sep 2016, 12:55
Hallo,

meine ClassFactory erzeugt eine Crossverweisliste, die angibt, welches Interface in welcher Klasse und welche KLassen die einzelnen Interface implementieren. Mit den Klassen liste ich b.B. auch noch die Methoden und die Properties auf. Das würdeich gerne auch für die Interfaces machen.

Bei Interfaces funktioniert folgender Code aber nicht, obwohl es laut Doku eigentlich gehen sollte.

Delphi-Quellcode:
//==============================================================================
function GetRttiMethods (aInfo: PTypeInfo): TArray<String>;
//==============================================================================
var mContext: TRttiContext;
    mMethods: TArray<TRttiMethod>;
    i, l: Integer;
begin
  mContext := TRttiContext.Create;
  mMethods := mContext.GetType (aInfo).GetMethods ();
  l := Length (mMethods); // mit l bei keinem oder wenigen Einträgen deutlich schneller
  SetLength (Result, l);
  if l > 0 then for i := 0 to l - 1 do Result[i] := mMethods[i].Name;
  mContext.Free;
end;

//==============================================================================
var
  mList: TArray<String>;
begin
  mList := GetRttiMethods (TypeInfo (TMyObject)); // OK
  mList := GetRttiMethods (TypeInfo (TMyRecord)); // OK
  mList := GetRttiMethods (TypeInfo (IMyInterface)); // NG, Liste bleibt leer ???
end;
Hat jemand eine Idee??
Danke
Peter Kaisler
Das einzig Komplizierte ist zu begreifen wie einfach es ist.
  Mit Zitat antworten Zitat