我實際上試圖使用Rtti來實現一個通用的方法調用器。它應該是這樣的:如何在Delphi XE中通過名稱獲取類的類型引用?
- 我會提供類名,方法名和參數
- 調用者會通過調用這個類的指定方法
所以,我做的工作需要類引用以獲取其Rtti信息並尋找我想調用的方法。
有沒有辦法做到這一點,而不是實現我想要使用的類的類參考列表?
我實際上試圖使用Rtti來實現一個通用的方法調用器。它應該是這樣的:如何在Delphi XE中通過名稱獲取類的類型引用?
所以,我做的工作需要類引用以獲取其Rtti信息並尋找我想調用的方法。
有沒有辦法做到這一點,而不是實現我想要使用的類的類參考列表?
要使用他的名稱獲取類引用,必須使用傳遞類的名稱的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;
您打算如何計劃抓住課堂實例? –
我可以實例化一個對象,不管我是否獲得類參考 – Haruki