2011-09-13 60 views
0

我不知道怎麼做:使用RTTI調用通用列表的方法

有這個對象:

TMyObject = class; 

TMyList<T: TMyObject> = class(TList<T>) 
public 
    function Execute(aParam1, aParam2:string):boolean; 
end; 

TMyOtherObject = class(TMyObject) 

TMyOtherList = class(TMyList<TMyOtherObject>); 

如果我在函數參數中接收 TMyOtherList對象,如何通過rtti執行「執行」功能TObject的?

謝謝。

+0

爲什麼「通過RTTI」? –

+0

該函數正在接收TObject引用。 –

+2

我認爲描述你試圖解決的實際問題是一個非常好的主意,而不是要求如何實現你的psuedo-strong-typed解決方案。 –

回答

4

不要打擾RTTI,只需使用一個澆鑄:

(aObject as TMyOtherList).Execute(param1, param2); 

如果澆注不是一個選項,然後使用一個接口。

+0

謝謝大衛。但是函數對TMyOtherList一無所知。正因爲如此,我正在使用RTTI。該函數在傳遞對象的元數據上工作。並調用與該函數相同單元的通用函數。 –

+0

然後用界面解決它 –