在delphi中从RTTI返回ObjectList

约翰

我在对象内调用方法,并且试图保持动态状态,我遇到一个问题,即我的返回类型是一些对象的列表,我想到了现在使用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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Delphi中的通用图库,ObjectList的速度

如何从Delphi中的接口参考获取RTTI?

记录中的delphi rtti访问数组

使用RTTI递归迭代delphi中的内部记录

使用已知的RTTI在Delphi中设置TValue记录

Delphi RTTI对象检查器

如何在Delphi中使用rtti获取记录中过程类型的详细信息

在Delphi 10.3.3中使用RTTI收集类的所有后代

如何在Delphi中使用RTTI将枚举转换为字符串然后再次返回

通过C#_ObjectList中的XElement的属性

FPC:记录中的RTTI

Delphi RTTI GetMethod('create')不起作用

Delphi RTTI按属性值设置值

使用RTTI方法调用返回的函数引用

使用SetPropValue()和RTTI与Delphi Tokyo更改组件属性

如何使用RTTI修改delphi属性Getter / Setter?

Delphi RTTI使用Method.Invoke作为tkEnumeration参数

Delphi如何使用RTTI获取属性的默认值

Delphi RTTI,已发布的属性出现两次

Delphi 中的泛型并返回对 tlist<class> 的引用

如何在Delphi ASM中返回var参数

在Delphi XE5中文件日期返回错误

objectList.stream().collect(Collectors.toMap(Object::getField, Function.identity)) 會返回 null 嗎?

Oracle触发器中的RTTI

在Delphi XE7中制成的DLL返回在Delphi 2007中使用的字符串数组

Delphi:如何使用RTTI知道哪个索引属性具有字符串索引

如何测试未知的Delphi RTTI TValue是否反映了任何类型的通用TList <>(或至少TEnumerable <>)的对象?

如何在Delphi中使用RTTI或TypeInfo获取枚举的有效范围

是否有任何Delphi版本可以发出包含tkUnknown的RTTI?