Was mir jetzt noch aufgefallen ist: Ich würde natürlich mit den deklarierten Interfaces arbeiten...
Delphi-Quellcode:
var
tmpHundList: IHundList;
tmpKatzeList: IKatzeList;
if Supports(Zoo.HundList, IHundList, tmpHundList) then
begin
tmpHundList.Add(Hund); // sollte passen
tmpHundList.Add(Katze); // sollte nicht kompilieren
end;
if Supports(Zoo.HundList, IKatzeList, tmpKatzeList) then
begin
Beep; // sollte nie aufgerufen werden
end;
Ist das denn falsch?
Ich werde mir das heute Abend mal anschauen. Ohne Delphi komme ich da jetzt nicht nach.
Dann noch die
Guid bei dem Basis-Listeninterface weg lassen, dann sollte das doch funktionieren...!?