我有以下程式。
procedure TForm1.Button1Click(Sender: TObject);
begin
var con: TRttiContext;
var meth := con.GetType(TButton).GetMethod('Click');
meth.Invoke(BitBtn1, []);
end;
BitBtn1是一個 TBitBtn。如您所見,meth是從 type 獲得的方法物件TButton。但是,通過我的測驗,可以毫無問題地針對 TBitBtn 呼叫它。這是預期的嗎?
uj5u.com熱心網友回復:
您發布的 RTTI 之所以有效,是因為兩者TBitBtn共享一個實作該方法TButton的共同祖先 ( )。TCustomButtonClick
如果您使用的兩種型別不是實作相同方法的祖先的后代,則代碼將失敗,例如TEdit和TMemo。兩者都允許您輸入文本,但TMemo具有Lines. TEdit不會,這會導致您發布的代碼失敗。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/450613.html
