
Zitat von
QuickAndDirty:
Kann ich dann einfach auf with aDataset as ITable do
casten?
Ja. Du solltest dem interface aber eine
GUID geben, sonst kann der as-Operator nicht funktionieren. (Er verwendet QueryInterface)
Zitat:
Könnte ich einen Vorfahren als einen Identischen Nachfahren Casten? Oder muss ich
wirklich adataset := TInterfacedTable.create(self);
machen?
Du hast das wieder so schön nichtssagend schwammig ausgedrückt...
Generell gilt: Eine Instanz von TBlabla sollte man nicht einfach als TAbleitungVonBlabla benutzen, außer man weiß
ganz genau was man da macht und vor allem
warum man es macht.
Wenn du beide (oder zukünftig mehr) Klassen ableiten und dein Interface implementieren kannst, und wenn du die Stellen, in denen die alten Klassen benutzt werden, durch die Ableitungen ersetzen kannst. Nunja, dann bräuchtest du keine Zauberei.
Wenn das nicht geht wäre die einzige vernünftige Lösung einen Wrapper anzulegen, der das Interface implementiert und eine Factory, die aus einer Dataset-Instanz eine Referenz auf den Wrapper zurückgeben kann.
Klingt alles viel schlimmer als es tatsächlich ist.
btw: Interfaces gehören
IMHO genau wie Klassen zu den absoluten Grundlagen in Delphi.
Du solltest dich also definitiv damit auseinandersetzen.