[VB.NET] DLL-Methoden dynamisch invoken. Wie?

Guten Abend zusammen.

Ich habe mir mal ein Test-Projekt aus einer Dynamischen Library und einer Host-Anwendung erstellt um mich in das Thema ein bisschen einzuarbeiten. Leider scheitere ich dabei, die Methoden der DLL aufzurufen. Die DLL soll aber generell austauschbar sein und daher erst zur Laufzeit „gescannt“ werden.

Umsetzen wollte ich folgendes:

  1. Im Host alle Methoden (mit deren Parametern) der DLL in einem ListView ausgeben
  2. Eine Methode aus der Liste auswählen können und per Button ausführen (Parameter werden per Input() abgefragt)

Punkt 1 klappt super. Ich erzeuge in der DLL ein Array vom Typ Reflection.MethodInfo mit allen Methoden via Me.GetType().GetMethods() und filtere alle geerbten heraus. Die Methoden werden dann im ListView der Host-Anwendung eingetragen.

Bei Punkt 2 hakt es aber. Ich bekomme es nicht auf die Reihe, die ausgewählte Methode zu invoken. Die MethodInfo vom ausgewählten Objekt wird im Debugger übrigens korrekt angezeigt. Es sollte also lediglich daran liegen, wie ich versuche, diese Methode aufzurufen.

Ich habe es zuerst mit einem Delegaten probiert, um das ganze über tmpMethodDelegate.DynamicInvoke(paramArray) zu starten:

tmpMethodDelegate = MethodInvoker.CreateDelegate(selectedMethodInfo.GetType(), selectedMethodInfo)

…löst aber bereits eine System.ArgumentException {„Der Typ muss vom Delegaten abgeleitet werden. Parametername: type“} aus. Was müsste ich denn stattdessen dort eintragen?

Ein anderer gescheiterter Versuch war:

selectedMethodInfo.Invoke(selectedMethodInfo, paramArray)

…was mir eine System.Reflection.TargetException {„Das Objekt stimmt mit dem Zieltyp nicht überein.“} ausspuckt (1. Parameter "obj As Object)).

Kann mich jemand in die richtige Richtung lenken? Ich finde zu den fehlerverursachenden Parametern nur Infos für DLLs, für die die Methoden bereits beim Kompilieren bekannt sind.

LG