|
VB.Net-Forum - Beitragsübersicht - |
|
Thema | SON: Einlesen vorhandener DLL und Integrierung zur Laufzeit |
Von |
Alex |
Datum |
19. September 2015 um 15:06:06 |
Frage |
Hallo, ich habe zu meinem Problem leider bisher nichts gefunden.
Folgendes, ich habe in mein Programm als Basis eine Form mit grundlegenden Steuerelementen wie MainMenu, Statustrip und einigen Labels. Zur Übersicht und zur Vereinfachung von Updates habe ich eine DLL in der Die einzelnen Funktionen für die Steuerelemente auf der Form sind. Weiter habe ich für aktuell 16 verschiedene Funktionen und (ich nen sie mal) Plug-ins in einzelnen Klassenbibliothek Projekten, da diese sehr umfangreich sind. Einige Davon beinhalten Benutzersteuerlemente die bei bedarf geladen werden.
Nun möchte ich aber, wenn bei einem Update eine weitere Klassenbibliothek zur verfügung steht, nicht das gesammte Paket als update bereit stellen, sondern nur die eine dll in einen Ordner laden. Das Programm soll dann beim Start den Ordner scannen und erkennen das dort eine DLL liegt (das läuft Problemlos) und diese Dll dann integrieren. Meine Frage jetzt, wie stell ich das am einfachsten an?
Ich dachte daran, evtl. den Einstieg der dll gleich dem Dateinamen zu bennen. Wie aber setze ich es aber am besten um, im Einstiegspunkt die wichtigsten Abläufe zu definieren?
Also z.B. eine Berechnung die unter Public Shared Function rechnedochmal(x1 As Integer, x2 As Integer, str As String) As Boolean Dim matx As Integer = x1 * x2 Dim strL As Integer = Len(str) If matx = strL Then Return True End If End Function Wie sage ich ihm da, wie er diese Funktion nutzt? Und wie sage ich ihm, das in einer Klassenbibliothek ein Benutzersteuerelement ist, das er auf Anfrage laden soll?
Ach, das ganze läuft unter VS2015.
Danke für eure Hilfe |
|
Antwort: |
Von |
Nico |
E-Mail |
nico.schertler@studentpartners.de |
Datum |
20. September 2015 um 08:37:23 |
Antwort |
Hallo,
du kannst über die Dateisystemfunktionen alle DLL-Dateien in einem Ordner suchen. Dann kannst du versuchen, diese mit Assembly.LoadFile() zu laden. Anschließend kannst du alle in dieser Assembly definierten Typen per Reflection (Assembly.GetTypes()) aufzählen und dir raussuchen, was du brauchst. Irgendwelche Typen zu verwenden, macht sicher keinen Sinn. Du musst dir vorher überlegen, wie dein Programm solche DLLs einbinden können soll. In den meisten Fällen ist es sinnvoll, dafür eine Schnittstelle zu definieren, die die neuen Typen implementieren. Dann kannst du einfach alle Typen raussuchen, die diese Schnittstelle implementieren und wie gehabt verwenden.
Nico |
|
[ Antwort schreiben | Zurück zum VB.Net-Forum | Forum-Hilfe ] |
|
Letzte Aktualisierung: Sonntag, 13. Dezember 2015 |
|