小编Int*_*t0h的帖子

FreePascal RTTI.有没有办法调用方法?

我试图找出是否有办法做类似于Delphi的增强型RTTI功能.

据我所知,FPC不提供自Delphi 2010以来Delphi中出现的RTTI功能.但我想找到一些方法在运行时做一些技巧.

typinfo在FPC中使用单位我可以做以下事情:

  • 获取对象发布的属性列表 - getPropList来自typinfo单元;
  • 获取/设置Object的已发布属性的值 - 通过GetPropValue(...): Variant/ SetPropValue(...Value: Variant);
  • 获得发表的方法 - 通过MethodAddres;

但我还没有办法做一些事情,比如:

  • 呼叫方法;
  • 调用构造函数,或创建对象;

更新:构造函数的问题很像方法一 - 我希望有一种方法可以传递不同的参数:

// concept of code
type

TClass = class of TObject;

TMyClass1 = class
  public
    constructor Create(Param1: Integer; Param2: string); override;
  end;

TMyClass2 = class
  public
    constructor Create(ObjectParam: Object); override;
  end;

TParams = array of Variant;

var 
Classes: array of TClass 
Instances: array of Object;
ParamArray: array of TParams; …
Run Code Online (Sandbox Code Playgroud)

delphi runtime rtti fpc

6
推荐指数
1
解决办法
942
查看次数

标签 统计

delphi ×1

fpc ×1

rtti ×1

runtime ×1