Subs und Functions dynamisch in externen Dlls abrufen

    • VB.NET

    Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von ~blaze~.

      Subs und Functions dynamisch in externen Dlls abrufen

      Hi
      Häufig möchte man dem Benutzer des Programms die Möglichkeit zur Verfügung stellen, Add-Ons einzubinden, die auf dem Framework basieren. Dazu gibt es folgende Möglichkeit:
      1. Importieren des Namespaces System.Reflection:

      VB.NET-Quellcode

      1. Imports System.Reflection


      2. Die Dll/Exe laden:

      VB.NET-Quellcode

      1. Dim aInstance As Assembly = Assembly.LoadFrom("Pfad")


      3. Instanzieren der Klasse unter Verwendung des Typs bzw. vollständigen Namen der Klasse (MeinType.FullName)

      VB.NET-Quellcode

      1. Dim clsObject As Object = aInstance.CreateInstance("MeinProgramm.MeinNamespace.MeineKlasse")


      4. Abrufen der Subs, etc. in der Klasse

      VB.NET-Quellcode

      1. clsObject.Test(Parameter)


      Kommentare erwünscht!

      Gruß
      ~blaze~

      Edit: Tags eingefügt
      Tags: Dll, dynamisch, laden, Sub, MethodInfo, Assembly, Anwendung

      Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „~blaze~“ ()

      Es sollte noch erwähnt werden, dass bei AddIns / AddOns vererbung oder zumindestens Interfaces verwendet werden sollte um sicher zu stellen, dass die AddIns alles nötige haben. Im Fall von vererbung kann man auch Standard-Funktionen einbetten, die der AddIn-Schreiber, wenn nötig, überschreiben kann.
      Stimmt. ^^
      Ich hab gerade noch etwas dazu gebaut:

      VB.NET-Quellcode

      1. Dim method As MethodInfo = clsObject.GetType.GetMethod(Sub Oder Function Name)
      2. method.Invoke(clsObject, Parameter Werte)


      Damit kann man dann auch die Subs dynamisch abrufen. Am Besten einfach eine Datei mit den Sub-Namen beilegen lassen!

      Gruß
      ~blaze~