我正在使用一個非常大的delphi第三方庫,沒有源代碼,這個庫有幾個抽象方法的類。我需要在運行時確定何時由Descendant類實現abtract方法,以避免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;
我如何確定抽象方法是否在運行時的Descendant類中實現?
謝謝,但如果使用這種方式,我需要爲每個類類型實現一個函數,而我最好是一個更一般的解決方案。 – Salvador
我不確定你的代碼是否正確。 'ImplementsAbstractMethod(TChild2.Create)'將返回true,但'TChild2'和'TDescendantBase'都不會覆蓋'TMyBaseClass'的抽象'MyAbstractMethod'。 http://pastebin.com/JufNPJkg –
@rinntech:謝謝你的提高。我用正確的代碼更新了答案。 –