找出Delphi ClassType是否继承自其他ClassType?

Dav*_*vid 5 delphi inheritance

在Delphi中,给出以下内容:

TFruit = class;
TFruitClass = class of TFruit;

TApple = class(TFruit);

TRedApple = class(TApple);
Run Code Online (Sandbox Code Playgroud)

如果我有一个TFruitClass变量,我怎么能知道它是否继承TApple?比如说我有

var
  FruitClass: TFruitClass;
...
FruitClass := TRedApple;
Run Code Online (Sandbox Code Playgroud)

TApple在这种情况下,如何验证FruitClass是否确实继承了?使用FruitClass is TApple只适用于类实例.

Mar*_*ema 13

使用InheritsFrom:

if TApple.InheritsFrom(TFruit) then
  ...
Run Code Online (Sandbox Code Playgroud)

你也可以使用

var
  Fr: TFruitClass;
  X: TObject;
begin
  if X.InheritsFrom(TFruit) then
    Fr := TFruitClass(X.ClassType);
end;
Run Code Online (Sandbox Code Playgroud)