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