我正在使用一个没有源代码的非常大的 Delphi 第三方库,该库有几个抽象方法的类。我需要在运行时确定后代类是否实现了抽象方法,以避免
EAbstractError:Abstract Error
并向用户显示自定义消息或使用另一个类。例如,在此代码中,我想在运行时检查是否已实现MyAbstractMethod
。type
TMyBaseClass = class
public
procedure MyAbstractMethod; virtual; abstract;
end;
TDescendantBase = class(TMyBaseClass)
public
end;
TChild = class(TDescendantBase)
public
procedure MyAbstractMethod; override;
end;
TChild2 = class(TDescendantBase)
end;
如何在运行时确定一个抽象方法是否在派生类中实现?
ImplementsAbstractMethod(TChild2.Create)
将返回true,但是TChild2
和TDescendantBase
都没有覆盖TMyBaseClass
的抽象方法MyAbstractMethod
。http://pastebin.com/JufNPJkg - Daniel Marschall