Moin,
ich habe folgende Klasse:
TTable<T: class, constructor> = class;
und möchte in einer anderen Klasse (nicht generisch) über
RTTI überprüfen, ob eine bestimmte Property vom Typ TTable<T> ist.
Ich bekomme die TClass Information zurück, nur bekomm ich es nich hin, dass es korrekt erkannt wird.
Delphi-Quellcode:
type
TFoo = class
private
FBars: TTable<TBar>;
public
property Bars: TTable<TBar> read FBars write FBars;
end;
in diesem Beispiel möchte ich für die Property BarTable ermitteln, ob sie von TTable<T> ist, oder nicht.
Delphi-Quellcode:
var
LContext: TRttiContext;
LType: TRttiType;
LProperty: TRttiProperty;
LClass: TClass;
begin
LContext := TRttiContext.Create;
LType := LContext.GetType(TFoo);
LProperty := LType.GetProperty('Bars');
LClass := LProperty.PropertyType.AsInstance.MetaclassType; // LClass.ClassName ist korrekt: TTable<Unit1.TBar>
if LClass.InheritsFrom(TTable<T>) then // [DCC Fehler] Unit1.pas(222): E2003 Undeklarierter Bezeichner: 'TTable'
ShowMessage(LClass.ClassName);
if LClass.InheritsFrom(TTable<TObject>) then // kompiliert, liefert aber False zurück
ShowMessage(LClass.ClassName);
if LClass.InheritsFrom(TTable<TBar>) then // funktioniert, kann ich aber nicht gebrauchen, weil ich an dieser Stelle nicht auf einen konkreten Generic überprüfen kann
ShowMessage(LClass.ClassName);