在Delphi中,要检查IInterface引用是否实现了派生但未明确支持的接口,可以使用Supports
函数。Supports
函数接受两个参数:一个是要检查的对象实例,另一个是要检查的接口类型。如果对象实例实现了指定的接口类型,则返回True,否则返回False。
以下是一个示例代码:
type
IMyInterface = interface(IInterface)
['{12345678-9ABC-DEF0-1234-56789ABCDEF0}']
procedure MyMethod;
end;
TMyClass = class(TInterfacedObject, IMyInterface)
procedure MyMethod;
end;
var
obj: IInterface;
begin
obj := TMyClass.Create;
if Supports(obj, IMyInterface) then
ShowMessage('The object implements IMyInterface')
else
ShowMessage('The object does not implement IMyInterface');
end;
在这个示例中,我们定义了一个名为IMyInterface
的接口,并创建了一个名为TMyClass
的类,该类实现了IMyInterface
接口。然后,我们创建了一个IInterface
类型的变量obj
,并将其设置为TMyClass
的实例。最后,我们使用Supports
函数检查obj
是否实现了IMyInterface
接口,并根据结果显示相应的消息。
需要注意的是,Supports
函数只能检查对象是否实现了指定的接口类型,而不能检查对象是否实现了派生但未明确支持的接口。如果需要检查对象是否实现了派生但未明确支持的接口,可以使用as
关键字来尝试将对象转换为指定的接口类型,并检查转换是否成功。例如:
var
obj: IInterface;
myIntf: IMyInterface;
begin
obj := TMyClass.Create;
myIntf := obj as IMyInterface;
if Assigned(myIntf) then
ShowMessage('The object implements IMyInterface')
else
ShowMessage('The object does not implement IMyInterface');
end;
在这个示例中,我们使用as
关键字将obj
转换为IMyInterface
接口类型,并检查转换是否成功。如果转换成功,则说明对象实现了IMyInterface
接口,否则说明对象未实现该接口。
领取专属 10元无门槛券
手把手带您无忧上云