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' и' return type' совместимы. –