delphi – 如何从TClass创建的对象获取接口?
发布时间:2020-12-15 04:34:35 所属栏目:大数据 来源:网络整理
导读:我需要一些表单类实现相同的功能. (我已经放弃了将这个函数添加到一个共同的anchestor表单的想法,因为我不想添加一个在我的大多数表单上都没用的函数.) 所以……我想过使用接口. IMyInterface = interface procedure ShowHello();end;var MyForm : TMyForm;
我需要一些表单类实现相同的功能.
(我已经放弃了将这个函数添加到一个共同的anchestor表单的想法,因为我不想添加一个在我的大多数表单上都没用的函数.) 所以……我想过使用接口. IMyInterface = interface procedure ShowHello(); end; var MyForm : TMyForm; MyInterface : IMyInterface; begin MyForm := TMyForm.Create(Self); MyInterface := MyForm; //... end; 在这种简单的情况下,它可以正常工作,但我的应用程序使用动态包,我使用“GetClass”函数来获取表单类. var MyForm : TForm; MyInterface : IMyInterface; begin MyForm := TForm(GetClass('TMyForm').Create()); MyInterface := MyForm; end; 它导致“不兼容的类型:’IMyInterface’和’TForm’”错误. 解决方法
使用
Supports 功能检查接口是否已实现.
样品: var MyForm : TForm; MyInterface : IMyInterface; begin MyForm := TFormClass(GetClass('TMyForm')).Create(...); if Supports(MyForm,IMyInterface,MyInterface) then begin MyInterface.ShowHello; end; end; 您需要为接口声明GUID.否则支持不起作用.所以接口声明应如下所示: IMyInterface = interface ['{052E7D55-B633-4256-9084-37D797B01BB4}'] procedure ShowHello(); end; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |