![]() |
Überprüfung auf generische Klasse
Moin,
ich habe folgende Klasse:
Delphi-Quellcode:
und möchte in einer anderen Klasse (nicht generisch) über RTTI überprüfen, ob eine bestimmte Property vom Typ TTable<T> ist.
TTable<T: class, constructor> = class;
Ich bekomme die TClass Information zurück, nur bekomm ich es nich hin, dass es korrekt erkannt wird.
Delphi-Quellcode:
in diesem Beispiel möchte ich für die Property BarTable ermitteln, ob sie von TTable<T> ist, oder nicht.
type
TFoo = class private FBars: TTable<TBar>; public property Bars: TTable<TBar> read FBars write FBars; end;
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); |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:51 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz