Alternativ:
MyInstance.InheritsFrom(TMyClass)
Im Unterschied zu
is
kann man bei
InheritsFrom
auch eine Klassenvariable (class of) übergeben.
Also InheritsFrom(ClassB) würde bei Instanzen von ClassB, ClassC und ClassD true geben, aber z.B. bei ClassA false zurückliefern. Willst du direkt auf eine Klasse abfragen, kannst du ClassType verwenden:
Delphi-Quellcode:
type
TClassA = class
end;
TClassB = class(TClassA)
end;
TClassC = class(TClassB)
end;
TClassD = class(TClassD)
end;
var
MyInstance: TClassA;
begin
if MyInstance.InheritsFrom(TClassB) and (MyInstance.ClassType <> TClassB) then
... // ist ClassC oder ClassD oder sonst eine Klasse, die von ClassB abgeleitet wurde
end;