Problem mit Plugin-System (Visual Basic) (MEF)

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Problem mit Plugin-System (Visual Basic) (MEF)

    Hallo,
    Ich habe ein Plugin-System in Visual Basic mit MEF nach diesem Tutorial erstellt: Erstellen eines Plugin-Systems mit VB.NET und MEF ab .NET 3.5

    Funktioniert auch alles gut, ich würde jetzt gerne nur wissen, wie man z.B. existierende Subs von der Host-Anwendung aufrufen kann, wie man Steuerelemente anspricht oder ob man Code in einem Steuerelement ändern kann.
    Ich habe schon viele ähnliche Themen im Forum durchsucht, aber nichts relevantes gefunden.
    Kennt sich da jemand aus? :)
    @lolvb27 Willkommen im Forum. :thumbup:
    Subs im Hauptprogramm aufrufen kannst Du nicht, dafür ist ein Plugin-System nicht gemacht.
    Du kannst aber aus der tiefsten DLL heraus an das Hauptprogramm ein Event senden, womit z.B. Ergebnisse ode Ereignisse mitgeteilt werden. Das Hauptprogramm holt dann die Daten ab und zeigt in der GUI an, was anzuzeigen ist.
    Die DLL stellt ein Event bereit, die GUI aboniert das Event, d.h., dass diesem Event ein EventHandler zugeordnet wird.
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Class Form1
    2. ' Hauptprogramm, in dem das Plugin instanziiert wird
    3. Private Plugin As PluginOne ' das Plugin
    4. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    5. Plugin = New PluginOne ' instanziieren
    6. AddHandler Plugin.MyEvent, AddressOf MyEventHandler ' Eventhandler zuweisen
    7. Plugin.xxx() ' aufrufen
    8. End Sub
    9. Private Sub MyEventHandler(sender As Object, e As MyEventArgs)
    10. MessageBox.Show(e.Result.ToString()) ' Ergebnis ansehen
    11. End Sub
    12. End Class

    VB.NET-Quellcode

    1. Public Class PluginOne
    2. ' Dein Plugin, das ein Event senden kann
    3. Public Event MyEvent(sender As Object, e As MyEventArgs)
    4. Public Sub xxx()
    5. ' Event auslösen
    6. RaiseEvent MyEvent(Me, New MyEventArgs(42))
    7. End Sub
    8. End Class

    VB.NET-Quellcode

    1. Public Class MyEventArgs
    2. Inherits EventArgs
    3. ' übliche Deklaration eigener Eventargs
    4. ' Daten
    5. Public Property Result As Integer
    6. Public Sub New(res As Integer)
    7. Me.Result = res
    8. End Sub
    9. End Class
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!