在Delphi中,给出以下内容:

TFruit = class;
TFruitClass = class of TFruit;

TApple = class(TFruit);

TRedApple = class(TApple);

如果我有一个TFruitClass变量,如何确定它是否继承自TApple?例如。说我有
var
  FruitClass: TFruitClass;
...
FruitClass := TRedApple;

在这种情况下,如何验证FruitClass确实是从TApple继承的?使用FruitClass is TApple仅适用于类实例。

最佳答案

使用InheritsFrom:

if TApple.InheritsFrom(TFruit) then
  ...

您也可以使用
var
  Fr: TFruitClass;
  X: TObject;
begin
  if X.InheritsFrom(TFruit) then
    Fr := TFruitClass(X.ClassType);
end;

关于delphi - 找出Delphi ClassType是否从其他ClassType继承吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4443330/

10-11 13:47