delphi - 在delphi中从RTTI返回一个ObjectList

标签 delphi rtti delphi-10.1-berlin

我正在调用对象内部的方法,并且我试图保持非常动态的方式,我遇到了一个问题,我的返回类型是一些对象的列表,我考虑使用 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>>;

附注不要忘记初始化返回值,最好是在函数体的开头。

关于delphi - 在delphi中从RTTI返回一个ObjectList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48690532/

相关文章:

delphi - RestoreDC之后我需要调用TCanvas.Refresh吗?

c++ - 我可以在我的代码库中有选择地禁用 RTTI 以减小二进制文件的大小吗?

delphi - Delphi Berlin数据断点无效的地址/数据断点的地址使我难以理解

database - MS ACCESS 数据库密码 - 安全性如何?

delphi - 具体是什么导致 EPrivilege 提高?

Delphi 2010 宽函数与字符串函数

delphi - 如何获取TRTTIParamter的默认值

delphi - 有效地将 delphi/freepascal 集合复制到网格

delphi - 如何在没有助手的情况下访问私有(private)方法?

delphi - 如何可靠地检测剪贴板上的 RITCHTEXT 格式?