Zitat von
profmaster:
Bin grad dabei, das Beispiel zu studieren. Meine Frage. Wie kann ich prüfen, ob das Objekt korrekt an das Interface zugewiesen wurde.
Warum sollte es nicht korrekt an das Interface zugewiesen worden sein? Der Compiler erlaubt dir schon mal nur Objekte zuzuweisen, die das entsprechende Interface unterstüzten. Als Alternative kann man da nur noch
nil zuweisen.
Also wenn das Interface <> nil ist, dann ist das Objekte korrekt zugewiesen worden.
Ein Zugreifen auf das im Interface verpackte Objekt ist nicht möglich. Da muss man dann schon eine Methode schreiben, die Self zurückliefert:
Delphi-Quellcode:
Ibla = interface
function GetObject: TObject;
end;
Tbla = class(TInterfacedObject, Ibla)
function GetObject: TObject;
end;
function Tbla.GetObject: TObject;
begin
Result := Self;
end;
Womit aber jedem die Tür zum fehlerhaften Zugriff auf das interne Objekt gestattet ist.