![]() |
Re: TypeInfo über IID oder Klasse (und RTTI)
Zitat:
Bisher habe ich verstanden das du eine externe Schnittstelle in deine Anwendung anbieten nöchtest. Man kann also nachladbare Plugins erzeugen die in deinen Framework eingebunden werden. Schön. Aber wozu so umständlich und warum "Dependency Injection" -> "Abhängigkeits-Einspritzung" ? was soll das sein ? Normalerweise designe ich die Schnittstelle für die Plugins aus Sicht der Erfordernissen der Anwendung die diese Schnittstelle zur Verfügung stellen will, nicht umgekehrt. An diese Schnittstelle haben sich Plugins zu halten und IN dieser Scnittstelle gäbe es dann alle nötigen Methoden um an diese Infos ranzukommen. Davon mal abgesehen halte ich die Idee das die Plugin-Applikation tiefgehende Zugriffe auf die Implementation der Plugins ansich hat als sehr schlecht. Das widerspricht dem Black-Box-Prinzip. Naja, und bei Google finde ich unter "Dependency Injection" nur JAVA Kram und ich kann heut noch nicht verstehen warum sich echte Programmierer wie wir sich JAVA als Vorbild nehmen ;) Gruß Hagen |
Re: TypeInfo über IID oder Klasse (und RTTI)
Delphi-Quellcode:
function Supports(const AClass: TClass; const IID: TGUID): Boolean;
begin Result := AClass.GetInterfaceEntry(IID) <> nil; end; Super also so wie ich's oben schon benutzt hatte. Ich halte diese Implementation in D7 für schlecht bzw. nicht Bulletproof, es fehlt die Abfrage (AClass <> nil). (schonwieder haben die Borländer geschlafen, das nimmt mit jeder Delphi Version weiter zu) Gruß Hagen |
Re: TypeInfo über IID oder Klasse (und RTTI)
Hallo Hagen,
Zitat:
![]() Zitat:
Ziehe ich jetzt -sprichwörtlich- "an der Schnur" ein beliebiges Objekt heraus, wird es mit der Datenbankverbindung verknüpft, die ihrerseits zunächst erzeugt wird (? kommt darauf an, wie der zuständige Adapter das macht), die dazu zB einen Logger benötigt, der seinerseits diverse Senken unterstüzt, die ihrerseits zB eine Internetverbindung benötigen, usw. und voilá das Fenster ist erzeugt. Die "Injektion" besteht darin, dass keine dieser Klassen beschreibt, welche konkrete Klasse wann wo erzeugt wird, um das Problem zu lösen. Stattdessen tut sie das was sie soll: Exemplare des beschriebenen Typs verwenden und nicht erzeugen. Die Tatsache, dass nun solche "Komponenten" aus Plugins erzeugt werden, ist eher... nettes Beiwerk (oder eben auch nicht). Ich stelle das gerne zu einem späteren Zeitpunkt genauer vor. Solange bleibt mir zu sagen: Funktioniert prima :) Zitat:
|
Re: TypeInfo über IID oder Klasse (und RTTI)
Hi Choose,
ok ich habe mir kurz einige Seiten zu dieser Thematik reingezogen und bin sehr gespannt auf deine fertige Lösung. Du würdest mir einen großen Gefallen machen wenn du mich mit einer PN über deine Veröffentlichung informierst. Das interessiert mich brennend da ich selbst bei zweimaligem Lesen des Artikels nicht verstanden habe warum man ein solches Problem über DI lösen sollte. Soweit wie ich das nämlich beurteilen kann ist das "von Hinten durch den Kopf" gedacht und meiner Meinung nach eine "programmiertechnische Seifenblase". Ich sehe und verstehe also nicht wo der Nutzen gegenüber einer "linear gedachten Lösung" ist. Bisher erscheint mir das eine Lösung zu sein die die Gunddenkansätze der OOP vollkommen vergewaltigt. Nun, um mir also ein fundiertes Urteil erlauben zu können wäre eventuell deine Delphi Umsetzung einer DI sehr hilfreich für mich (ich sage ja immer sage niemals nie ;) ) Gruß Hagen |
Re: TypeInfo über IID oder Klasse (und RTTI)
Ich denke dran, schließlich werde ich mit hoher Wahrscheinlichkeit Deinen Code in den Teilbereich mit den Plug-ins einbauen (mit bedingter Kompilierung, versteht sich), sofern hier weder Einwände gegen die Kompatibiltät noch elegentare Vorschläge innerhalb der nächsten Tage kommen.
Zitat:
Auch wenn ich schon daran glaube, alle Leser mit wirren Formulierungen abgeschreckt zu haben: Zitat:
|
Re: TypeInfo über IID oder Klasse (und RTTI)
Zitat:
Zur eigentlichen Frage sehe ich nur drei Lösungen: 1.) entweder mit "schmutzigen" Tricks die bestehende Funktionalität um die Notwendige zu erweitern, oder 2.) Designtechnisch die Schnittstelle anders konstruieren um per se exakt die nötige Funktionalität von vornherein zu garantieren 3.) ein anderes Werkzeug, sprich Entwicklungssystem benutzen Gruß Hagen |
Re: TypeInfo über IID oder Klasse (und RTTI)
Hallo Hagen,
Zitat:
Aus diesem Grund werde ich im ersten Schritt wohl 1.) und in einem Folgeschritt eine Kombination aus 2.) und 3.) einsetzen. Die Delphi-IDE ist sehr anpassungsfähig und würde erlauben, die notwendigen Code-Schnipsel beim Speichern durch hinzugefügte Addins automatisch zu generieren... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:58 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