Einzelnen Beitrag anzeigen

Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.039 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#1

Überprüfung auf generische Klasse

  Alt 17. Dez 2009, 10:26
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);
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat