RAD XE反射机制的应用——只获取父类的方法

应用:获取父类的方法,不包括当前类中定义的方法。
uses Rtti,TypInfo;

procedure TForm1.Button1Click(Sender: TObject);
var
   ms: TArray<TRttiMethod>;
   m: TRttiMethod;
   mps: TArray<TRttiParameter>;
   mp: TRttiParameter;
begin
   Memo1.Clear;
   {获取父类方法集合}
ms := TRttiContext.Create.GetType(Self.ClassParent).GetMethods;
   for m in ms do
   begin
     {方法名称}
Memo1.Lines.Add('方法名称: ' + m.Name);

     {方法类型: proceedure、function 等}
Memo1.Lines.Add('方法类型: ' + GetEnumName(TypeInfo(TMethodKind), Ord(m.MethodKind)));

     {方法的返回值类型}
if Assigned(m.ReturnType) then
       Memo1.Lines.Add('返回值: ' + GetEnumName(TypeInfo(TTypeKind), Ord(m.ReturnType.TypeKind)));

     {方法的参数列表}
mps := m.GetParameters;
     if Length(mps) > 0 then
     begin
       Memo1.Lines.Add('参数:');
for mp in mps do Memo1.Lines.Add(mp.ToString);
       //还可以通过 mp.ParamType 获取参数的数据类型
//还可以通过 mp.Flags 获取参数的修饰符(譬如 var、const 等)
end;
     Memo1.Lines.Add(EmptyStr);
   end;
end;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值