![]() |
AW: Class Helper for Interface
Bei der Vererbung müssen sich aber die Helper kennen, bzw. es sind dann "immer" beide Helper eingebunden, wenn man den Nachfahren haben will.
Man kann aber nicht mehrere Helper unabhängig "parallel" deklarieren. z.B. der Helper vom Delphi, dann Meiner (OK, da könnte man vererben), aber jetzt kommen noch die Helper von sh17 und Anderen dazu, die ich mir über Fremdkomponenten reinhole. Sollen wir uns jetzt alle einigen, wer von wem erbt? Vererbung ist keine Lösung, denn gerade diese Abhängigkeiten wollte man doch loswerden. Da könnte man die Class-Helper auch gleich wegwerfen und direkt die Klassen-Vererbung benutzen. |
AW: Class Helper for Interface
Es würde immerhin reichen, dem RTL-eigenen
Delphi-Quellcode:
(und Konsorten) noch etwas eigenes hinzuzufügen. Wenigstens einmal. Ich bin ein genügsamer Mensch.
TStringHelper
|
AW: Class Helper for Interface
Zitat:
Wie soll das sonst funktionieren? |
AW: Class Helper for Interface
Zitat:
Zitat:
|
AW: Class Helper for Interface
Zitat:
Wie soll das Problem gelöst werden, welche Methode genommen werden soll? Mit As-Operator? |
AW: Class Helper for Interface
Zitat:
|
AW: Class Helper for Interface
Zitat:
Auch Interfaces kann man vererben, aber dann muß ich die Methoden nicht nur ins Interface einbauen, sondern auch in das dahinterliegende Objekt und genau das kann/will ich nicht, vorallem nicht, wenn man das Dahinter garnicht kennt und keinen Zugriff darauf hat. Mir würde es auch reichen, wenn man statische Methoden direkt im Interface deklarieren könnte, aber weil das nicht geht, dachte ich, ich probiere es einfach mal mit einem Helper, der dann auch garnicht ging. :stupid: |
AW: Class Helper for Interface
Zitat:
Das Objekt/Interface muß und soll garnichts davon wissen, genauso wie der Vorfahr von einer Vererbung auch nichts wissen soll. Der Compiler leitet den Aufuf auf die Helper-Methode um, wenn er sie findet und geht nicht direkt auf das Objekt/Interface los. [add] Das ist es, was Delphi bei den Class-Helpern macht ... so im Prinzip.
Delphi-Quellcode:
Das haben die einfach so von mir abgeguckt, denn sowas hatte ich früher schon gemacht, als es noch keine Helper gab.
type
TMyClass = class procedure Foo(S: string); end; TMyDummyClassHelper = class(TMyClass) procedure Bar(S: string); end; procedure TMyClass.Foo(S: string); begin ShowMessage(S); end; procedure TMyDummyClassHelper.Bar(S: string); begin S := StringReplace(S, ' ', ' du schöne ', []); Foo(S); end; var C: TMyClass; begin C := TMyClass.Create; C.Foo('Hallo Welt!'); //C.Bar('Hallo Welt!'); << Compiler findet Bar im Helper und baut quasi einen Cast ein. TMyDummyClassHelper(C).Bar('Hallo Welt!'); end; |
AW: Class Helper for Interface
Zitat:
:thumb: |
AW: Class Helper for Interface
So einfach kann es manchmal sein, wenn man kein Brett vorm Kopf hat! :thumb:
Spricht denn irgendwas rein technisch gegen Interface-Helper? COM-Kompatibilität oder so? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:50 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz