Einzelnen Beitrag anzeigen

Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#7

Re: With MyObject as MyObject.ClassType Do

  Alt 29. Mai 2007, 11:08
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.
Robert Giesecke
I’m a great believer in “Occam’s Razor,” the principle which says:
“If you say something complicated, I’ll slit your throat.”
  Mit Zitat antworten Zitat