我在对象内调用方法,并且试图保持动态状态,我遇到一个问题,即我的返回类型是一些对象的列表,我想到了现在使用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;
返回:
Result := M.Invoke(Self, Args).AsType<TObjectList<TObject>>;
PS不要忘记初始化返回值,最好是在函数体的开头。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句