gpt4 book ai didi

delphi - 使用部分委托(delegate)实现接口(interface)

转载 作者:行者123 更新时间:2023-12-03 16:06:35 25 4
gpt4 key购买 nike

我有一个只实现部分接口(interface)的子对象:

  IMyTest = interface
procedure P1;
procedure P2;
end;

TMyTestP2Impl = class
procedure P2;
end;

TMyTest = class(TInterfacedPersistent, IMyTest)
private
FMyTestP2Impl : TMyTestP2Impl;
public
constructor Create();
destructor Destroy(); override;
procedure P1;
procedure P2;
end;
所以我必须写 TMyTest.P2如下:
procedure TMyTest.P2;
begin
FMyTestP2Impl.P2();
end;
我想知道是否有有效的映射语法 TMyTest.P2FMyTestP2Impl.P2无需编写 TMyTest.P2 的实现.我的意思是这样的:
  TMyTest = class(TInterfacedPersistent, IMyTest)
private
FMyTestP2Impl : TMyTestP2Impl;
public
constructor Create();
destructor Destroy(); override;
procedure P1;
procedure P2 = FMyTestP2Impl.P2;
end;

最佳答案

您必须使用 delegation to a class type property :

type
IMyTest = interface
procedure P1;
procedure P2;
end;

TMyTestP2Impl = class
procedure P2;
end;

TMyTest = class(TInterfacedPersistent, IMyTest)
private
FMyTestP2Impl: TMyTestP2Impl;
property MyTestP2Impl: TMyTestP2Impl read FMyTestP2Impl implements IMyTest;
public
constructor Create;
destructor Destroy; override;
procedure P1;
end;

关于delphi - 使用部分委托(delegate)实现接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63012032/

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