Einzelnen Beitrag anzeigen

Patito

Registriert seit: 8. Sep 2006
108 Beiträge
 
#15

AW: Interfaces - Multiple Inheritance

  Alt 20. Nov 2013, 07:44
Sollte 'GetInterface' das Problem nicht lösen?

Dessenungeachtet frage ich mich, was 'Supports' für einen Sinn macht, wenn man damit nicht herausfinden kann, ob eine Instanz ein bestimmtes Interface implementiert. Oder einfach ausgedrückt: Wozu dient 'Supports'?
Ein sinnvoller Anwendungsfall von Supports ist eben gerade der, dass man einen Workaround für die fehlende Unterstützung von Multiple Interface- Inheritance hat.

IReadWrite = interface(IRead, IWrite) geht nicht. Daher kann leider nur
IReadWrite = interface(IRead) oder IReadWrite = interface(IWrite) machen.

Hat man jetzt ein IReadWrite und braucht sowohl IRead als auch IWrite, muss man zur Laufzeit einen der Casts über Supports() machen.

Für COM-Interfaces braucht man ausserdem so ein QueryInterface() um aus einem fremden Pointer ein Interface zu machen.
Als Sprachfeature intern ist die Verwendung von Supports ansonsten aber eher schlechter Stil (so in etwa wie wenn man Klassen und Methoden nicht normal benutzt, sondern alles zur Laufzeit über RTTI und irgendwelche Strings zusammenwurstet).

Geändert von Patito (20. Nov 2013 um 07:49 Uhr)
  Mit Zitat antworten Zitat