Delphi2009 反射机制的使用

 Delphi2009中添加了一个用于实现反射的单元,即ObjAuto,用它可以轻松的实现反射。
对于原本的RTTI,只能够得到published区分符下的属性,而反射机制则可以得到拥有反射支持的类的公开方法,成员变量和属性。
下面是一个小例子:

首先写一个拥有反射支持的类,注意类必须继承自TPersistent,并且类声明带有MethodInfo编译预处理。
MethodInfo是一个全新的预处理指令,它标识了指定的类能否支持反射。

{$MethodInfo+}
type
TTestClass = class(TPersistent)
public
     procedure TestReflect(Astr: string);
     function Test2: Integer;
end;
{$MethodInfo-}

然后我们写一点代码,用于获取类中的方法,注意必须要uses中添加ObjAuto单元
var
test : TTestClass;
mia : TMethodInfoArray;
mi : PMethodInfoHeader;
begin
test := TTestClass.Create;
try
    mia := ObjAuto.GetMethods(test.ClassType);
    for mi in mia do
      ShowMessage(mi^.Name);
finally
    test.Free;
end;
end;

这段代码即可把类中公开的方法都获取出来。如果有属性的话,也是一样。
获取到的方法,也可以进一步通过反射机制来调用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值