使用部分委托实现接口
Implementing an interface with partial delegation
我有一个子对象只实现了接口的一部分:
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.P2
映射到 FMyTestP2Impl.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;
我有一个子对象只实现了接口的一部分:
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.P2
映射到 FMyTestP2Impl.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;