Clara, parte de este staff, nos ha hecho el favor de escribir este escrito porque controla perfectamente este tema.
Solución:
No hay herencia de interfaz múltiple en Delphi ya que no hay herencia múltiple en Delphi en absoluto. Todo lo que puede hacer es hacer que una clase implemente más de una interfaz a la vez.
TMyClass = class(TInterfacedObject, IInterfaceA, IInterfaceB)
En Delphi, las interfaces no pueden heredar múltiples interfaces, pero las clases pueden implementar múltiples interfaces. Si diseña sus componentes correctamente (busque ISP – principio de segregación de interfaz) no debería necesitar tener interfaces heredadas de interfaces.
En mi humilde opinión, en este caso, debe definir tres tipos. Uno por interfaz y tercero para herencia múltiple:
IInterfaceA = interface
procedure A;
end;
IInterfaceB = interface
procedure B;
end;
TiA = class(TInterfacedObject, IInterfaceA)
procedure A;
end;
TiB = class(TInterfacedObject, IInterfaceB)
procedure B;
end;
TMyObject = class(TInterfacedObject, IInterfaceA, IInterfaceB)
private
_iA : IInterfaceA;
_iB : IInterfaceB;
function getiA : IInterfaceA;
function getiB : IInterfaceB;
public
property iA : IInterfaceA read getiA implements IInterfaceA;
property iB : IInterfaceB read getiB implements IInterfaceB;
end;
.....
TMyObject
function TMyObject.getiA: IInterfaceA;
begin
if not Assigned(_iA) then _iA := TIA.Create;
Result := _iA;
end;
function TMyObject.getiB: IInterfaceB;
begin
if not Assigned(_iB) then _iB := TIB.Create;
Result := _iB;
end;
Si haces scroll puedes encontrar las referencias de otros administradores, tú también tienes el poder dejar el tuyo si te gusta.