在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
思路:通过数据字典定义BPL包名,然后定义BPL包里面的类名,然后定义类里面的方法名,最后定义方法的参数值。 可实现动态加载BPL,调用哪个BPL的哪个类的哪个方法并给该方法赋给指定的参数值,如果是函数还可以取得函数的返回值。 应用场合之一:中间件实现非可视功能插件。 下面来DEMO码子。 首先动态加载BPL包: bplName := TPlug(TdxBarButton(Sender).Tag).bplName; 然后获取BPL的对象 var begin LContext := TRttiContext.Create; LClass := LPackage.FindType(unitClass) as TRttiInstanceType; end finally 最后传递参数调用类的方法 TMyClass = class(TComponent) var implementation {$R *.dfm} { TMyClass } procedure TMyClass.msg(const str: string); function TMyClass.Add(const a, b: Integer): Integer; procedure TForm1.Button1Click(Sender: TObject); {获取 TMyClass 类的两个方法} obj := TMyClass.Create(Self); {调用需要依赖一个已存在的对象} {调用 msg 过程} {调用 Add 函数} obj.Free; 代码只是为了演示这么个意思,你懂的。 以上的一切都是通过字典定义,RTTI运行时根据字典动态调用,如果你的开发框架里面或者中间件里面这样实现,简直帅呆了!
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论