Delphi:RTTI应该使用哪些方法?

时间:2016-04-05 12:31:52

标签: delphi delphi-7 rtti fpc

我想了解向RTTI添加方法的原则(我的意思是旧版本,旧Delphi版本(Delphi 2010之前)或FPC支持)。据我所知,RTTI应该有关于已发布方法的信息。但是以下示例在我的情况下不起作用:

{$M+}
  TMyClass = class  
    published
      procedure testfn(a,b,c: Integer);
  end;
{$M-}

...

procedure TMyClass.testfn(a,b,c: Integer);
begin
    ShowMessage('s');
end;

...

GetPropInfo(TMyClass, 'testfn'); // returns nil

我想了解我需要更改以接收方法的 PPropInfo

我想获取该方法的PTypeInfo。如果是属性,可以通过

检索
PropInfo := GetPropInfo(...); 
TypeInfo := PropInfo^.PropType; 
TypeData := GetTypeData(TypeInfo);

我需要类似的方法。

1 个答案:

答案 0 :(得分:0)

查看mORMot Framework。它包括一大堆额外的RTTI辅助函数,包括非常方便的TMethodInfo对象以及用于填充它的便利函数。

/// retrieve a method RTTI information for a specific class
function InternalMethodInfo(aClassType: TClass; const aMethodName: ShortString): PMethodInfo;