Du könntest ein Objekt benutzen, das ein Interface implementiert. Deine Methode steht aber nicht in Interface A, sondern in Interface B. Wenn du darauf zugreifen willst, holst du dir mit Supports einfach über den Zugriff mit Typ Interface A ein Interface B. Nur dann kannst du auch mit den zusätzlichen Features arbeiten.
Beispiel, etwas gekürzt:
Delphi-Quellcode:
type
IA =
interface
['
{...}']
procedure A;
end;
IB =
interface
['
{...}']
procedure B;
end;
TA =
class(TInterfacedObject, IA,
IB)
procedure A;
procedure B;
end;
var
Test: IA;
TestB:
IB;
begin
Test := TA.Create;
Test.
{...} // Hier bekommst du nun nur Prozedur A angeboten
// Zum Aufruf von B:
if Supports(Test,
IB, TestB)
then
TestB.B;
end;