Gleichnamige Methoden können bei vererbten Interfaces nicht richtig aufgelöst werden mit Method Resolution Clause.
IMyInterfaceEx hat ja 2 Methoden namens getNumber, aber du delegierst nur die von IMyInterface und eine von IMyInterfaceEx (die, die Single zurückliefert).
Nun fehlt noch die getNumber Methode aus IMyInterface, die im IMyInterfaceEx drin steht - da interesiert ihn nicht, dass du IMyInterface.getNumber delegiert hast.
Mein Ansatz in solchen Fällen ist Vererbung der implementierenden Klasse:
Delphi-Quellcode:
TMyObject = class(
TInterfacedObject,
IMyInterface
)
function getNumber(): Integer;
end;
TMyObjectEx = class(
TMyObject,
IMyInterfaceEx
)
function IMyInterfaceEx_getNumber(): Single;
function IMyInterfaceEx.getNumber = IMyInterfaceEx_getNumber;
end;