Delphi-Quellcode:
...
var
MySomeThingObject : ISomeThing;
begin
MySomeThingObject := TMyDoSomething.Create;
if Supports(MySomeThingObject, IInteger) then
begin
ShowMessage('IInteger wird voll unterstützt!!!');
end;
end;
... und laut Doku ist das Objekt damit auch zerstört und damit kann man diese Variante nicht verwenden...
Edit: Habe nicht erwähnt das ich meine Klassen nicht als Interface speichern kann (ISomeThing muss zu TSomeThing werden), weil ich eben eine "Basisliste" mit allen Klassen habe. Diese stehen untereinander in verschiedenen Beziehungen und pflegen daher eigene TNodeList-en um eine Referenz auf diese benötigten Instanzen zu haben. Durch diese Verlinkung schnellt der _RefCount bei verwendung von Interfaces aber hoch und am Programmende, wenn die "Basisliste"-alles frei gibt, bleibt ein riesiges Memoryleek über.