gpt4 book ai didi

delphi - 使用派生接口(interface)时接口(interface)委托(delegate)不起作用

转载 作者:行者123 更新时间:2023-12-03 18:20:59 24 4
gpt4 key购买 nike

在 Delphi Seattle 10 中,我尝试使用 implements 委托(delegate)接口(interface)的实现。关键字,但是当从第一个接口(interface)派生的接口(interface)也包含在类声明中时,不接受委托(delegate)。

以下代码的编译失败,并显示“缺少接口(interface)方法 IInterface1.DoSomethingFor1 的实现”消息。如果我从类声明中删除 IInterface2,代码就会编译。如果我从其他东西派生 IInterface2,那么 IInterface1 它也会编译。

我做错了什么?或者我怎样才能做到这一点?

type
IInterface1 = interface(IInterface)
['{03FB3E2E-C0DD-4E17-B6CD-D333E1E7255E}']
procedure DoSomethingFor1;
end;

Iinterface2 = interface(IInterface1)
['{89C266E2-2816-46AD-96AA-DD74E78A4D1E}']
end;

T1 = class(TInterfacedObject, IInterface1, IInterface2)
private
Fi1: IInterface1;
public
property I1_Delegate: IInterface1 read Fi1 implements IInterface1;
end;

最佳答案

您需要显式实现 IInterface1IInterface2。您只需实现前者。因此出现编译错误。您的实现类应该如下所示:

type
TImplementingClass = class(TInterfacedObject, IInterface1, IInterface2)
private
Fi2: IInterface2;
public
property I2_Delegate: IInterface2 read Fi2 implements IInterface1, IInterface2;
end;

关于delphi - 使用派生接口(interface)时接口(interface)委托(delegate)不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37295663/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com