我想了解向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);
我需要类似的方法。
答案 0 :(得分:0)
查看mORMot Framework。它包括一大堆额外的RTTI辅助函数,包括非常方便的TMethodInfo对象以及用于填充它的便利函数。
/// retrieve a method RTTI information for a specific class
function InternalMethodInfo(aClassType: TClass; const aMethodName: ShortString): PMethodInfo;