3
我想處理一個TRttiMethod
作爲匿名方法。我怎麼能這樣做?如何從TRttiMethod獲取/創建匿名方法?
這裏是我多麼希望的事情一個簡單的例子來工作:
接口:
TMyClass = class
public
// this method will be acquired via Rtti
procedure Foo;
// this method shall return above Foo as anonymous method
function GetMethodAsAnonymous: TProc;
end;
實現:
function TMyClass.GetMethodAsAnonymous: TProc;
var
Ctx: TRttiContext;
RttiType: TRttiType;
RttiMethod: TRttiMethod;
begin
Ctx := TRttiContext.Create;
try
RttiType := Ctx.GetType(Self.ClassType);
RttiMethod := RttiType.GetMethod('Foo');
Result := ??????; // <-- I want to put RttiMethod here - but how?
finally
Ctx.Free;
end;
end;
謝謝,前兩個解決方案,爲我的工作情況。我認爲唯一的警告:他們都明確重複返回類型的簽名。我希望有一個解決方案,我不需要這樣做。推斷出「RttiMethod」和「返回類型」的簽名是兼容的。 –