我在一个对象内部调用方法,我试图保持方法的动态性,我遇到了一个问题,我的返回类型是一些对象的列表,我考虑过使用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;发布于 2018-02-09 01:02:39
返回:
Result := M.Invoke(Self, Args).AsType<TObjectList<TObject>>;另外,不要忘记初始化返回值,最好是在函数体的开头。
https://stackoverflow.com/questions/48690532
复制相似问题