如果使用{$M+}参数来定义接口,那么程序将会为该接口生成rtti信息,例如
{$M+}
Isome = interface
function GeStr: string;
end;
{$M-}
接下来,我们可以访问该接口的信息了
uses TypInfo,IntfInfo;
procedure TForm1.Button1Click( Sender: TObject );
var
intfMd : TIntfMetaData;
msg : string;
begin
GetIntfMetaData( TypeInfo( Isome ), intfMd );
msg := msg + sLineBreak +'接口名称' + intfmd.Name ;
msg := msg + sLineBreak +intfMd.UnitName +'单元';
msg := msg + sLineBreak +'有' + IntToStr(Length(intfMd.MDA))+'个方法';
msg := msg + sLineBreak +intfMd.MDA [0].Name ;
msg := msg + sLineBreak +'调用惯例:'+CallingConventionName[ intfMd.MDA [0].CC];
showmessage(msg);
showMessage(GetTypeData(TypeInfo(TForm1)).UnitName); //可以得到类声明的单元
end;
还有其他的一些信息,没有一一枚举了,这些将有助于插件系统的开发