2011-10-20 73 views
5

我實際上試圖使用Rtti來實現一個通用的方法調用器。它應該是這樣的:如何在Delphi XE中通過名稱獲取類的類型引用?

  • 我會提供類名,方法名和參數
  • 調用者會通過調用這個類的指定方法

所以,我做的工作需要類引用以獲取其Rtti信息並尋找我想調用的方法。

有沒有辦法做到這一點,而不是實現我想要使用的類的類參考列表?

+0

您打算如何計劃抓住課堂實例? –

+0

我可以實例化一個對象,不管我是否獲得類參考 – Haruki

回答

8

要使用他的名稱獲取類引用,必須使用傳遞類的名稱的TRttiContext.FindType函數,並使用AsInstance屬性檢索實例,然後可以調用該類的構造函數。

var 
    Instance : TRttiInstanceType; 
    ctx : TRttiContext; 
    mClass : TValue; 
begin 
    ctx := TRttiContext.Create; 
    Instance := ctx.FindType(ClassName).AsInstance; //ClassName is something like 'Classes.TStringList'; 
    mClass := Instance.GetMethod('Create').Invoke(Instance.MetaclassType,[]); 

    //do your stuff here 


end; 
+0

它在這裏工作,非常感謝您的答案! – Haruki

+0

有什麼方法可以查看我是否已經實例化了此類的任何實例並獲取此對象以供使用? – Haruki

+2

這是另一個問題,但使用不可能的RTTI。 – RRUZ

相關問題