【发布时间】:2018-02-08 16:40:54
【问题描述】:
我在一个对象内调用方法,我试图在我做它的方式上保持非常动态,我遇到了一个问题,我的返回类型是一些对象的列表,我考虑过使用 TObjectList现在的问题是 rtti 返回一个 TValue,我不完全理解如何将它转换为 TObjectList。我认为将 TValue 转换为 TObject 因为理论上 TObjectList 是一个对象,但它不起作用。你们知道我怎么可能做到这一点吗?
这就是我所说的功能。
function TMyClass.ExecMethodAndRet(MethodName: string;
Args: array of TValue): TObjectList<TObject>;
var
R : TRttiContext;
T : TRttiType;
M : TRttiMethod;
begin
T := R.GetType(FMyObject.ClassInfo);
for M in t.GetMethods do
if (m.Parent = t) and (UpperCase(m.Name) = UpperCase(MethodName))then
begin
result := M.Invoke(FMyObject, Args); <- problem here can't cast to TObjectList
end;
end;
【问题讨论】:
标签: delphi rtti delphi-10.1-berlin