我需要獲取表單類型的列表,但僅限於從給定的基本表單派生的類型。如何獲得從給定類派生的類的列表,增強了RTTI?
我用Delphi 2010和增強RTTI瀏覽類型
我當前的代碼是:
rc := TRTTIContext.Create;
rtyps := rc.GetTypes;
for rtyp in rtyps do
begin
if not(rtyp.IsInstance) then Continue;
// Now I need to check if rtyp.AsInstance.MetaclassType is derived from TMyBaseForm
end;
我不想實例化一個對象,並用「是」操作,因爲它不會執行及時。
作爲當前的解決方法,我測試一個方法,在TMyBaseForm介紹,在RTTI情況下被發現:
if (rtyp.GetMethod('MyMethod') = nil) then Continue;
但這不是一個乾淨的解決方案,因爲它可以,如果導致問題與方法同一個名字在另一個班級分支中引入。
所以,我的問題:是否有一種常規方法來檢測類類型是否從另一個類類型派生?
感謝,
我不知道如何使用RTTI實現它,但有[ClassParent](http://docwiki.embarcadero.com/VCL/en/System.TObject.ClassParent)函數。它返回一個類的直接祖先的類型。或者,如果您需要查明特定的類類型或對象是否是某個類的實例或其某個子類的實例,請使用[InheritsFrom](http://docwiki.embarcadero.com/VCL/en/System.TObject.InheritsFrom)功能。 – TLama