Hallo ich habe ein kleines Problem, ich habe ein Plugin system mit eigener SDK nach diesem Tut erstellt -> Erstellen eines Plugin-Systems mit VB.NET und MEF ab .NET 3.5. alles geht Prima nun
habe ich aber folgendes Problem
ich habe in der SDK (dll Datei) ein Event, das heisst "MeinErstesEvent" nun möchte ich dieses Event in der Hostanwendung behandeln, das heisst ich möchte das wenn mein Plugin das event "raised", das dann etwas in der Hauptanwendung passiert. das Geht aber nicht. Ich bekomme keine Fehler, es Passiert einfach nichts. Hier mal mein code
Code der SDK
Code Der Hostanwendung (Hauptanwendung)
Hier der Code des Plugins
Könnt ihr mir helfen? wie erstelle ich ein Event in meiner SDK und Behandle das in der Hostanwendung und wie löse ich das Event der SDK im Plugin aus, das in der Anwendung etwas passiert. Bitte helft mir brauche das sehr dringend.
habe ich aber folgendes Problem
ich habe in der SDK (dll Datei) ein Event, das heisst "MeinErstesEvent" nun möchte ich dieses Event in der Hostanwendung behandeln, das heisst ich möchte das wenn mein Plugin das event "raised", das dann etwas in der Hauptanwendung passiert. das Geht aber nicht. Ich bekomme keine Fehler, es Passiert einfach nichts. Hier mal mein code
Code der SDK
VB.NET-Quellcode
- Imports System.ComponentModel.Composition
- Imports System.ComponentModel.Composition.Hosting
- Imports System.Windows.Forms
- Public Class ZendrikSDK
- <ImportMany(GetType(ZendrikPlugin))>
- Public plugin As ZendrikPlugin()
- Public Sub EnablePlugins()
- Dim catalog As New DirectoryCatalog(IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "plugins\"))
- Dim container As New CompositionContainer(catalog)
- container.ComposeParts(Me)
- End Sub
- End Class
- Public Interface ZendrikPlugin
- Sub OnEnable(e As Form)
- Class PluginManager
- Public Event MeinErstesEvent()
- Public Sub LoeseEventAus()
- RaiseEvent MeinErstesEvent()
- End Sub
- End Class
- End Interface
Code Der Hostanwendung (Hauptanwendung)
VB.NET-Quellcode
- Public Class Form1
- Dim verbindung As New MeineSDK.ZendrikSDK
- Private WithEvents pm As New MeineSDK.ZendrikPlugin.PluginManager
- Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
- verbindung.EnablePlugins()
- For Each plugin As MeineSDK.ZendrikPlugin In verbindung.plugin
- plugin.OnEnable(Me)
- Next
- End Sub
- Private Sub BehandleDasEvent() Handles pm.MeinErstesEvent
- MsgBox("Das event von der Mainapp wurde durch das plugin ausgelöst")
- End Sub
Hier der Code des Plugins
VB.NET-Quellcode
- Imports System.Windows.Forms
- Imports MeineSDK
- Imports System.ComponentModel.Composition
- Imports System.ComponentModel.Composition.Hosting
- <Export(GetType(ZendrikPlugin))>
- Public Class MeinPlugin
- Implements MeineSDK.ZendrikPlugin
- Dim mainform As Form
- Dim pl As New ZendrikPlugin.PluginbManager
- Public Sub OnEnable(e As Form) Implements ZendrikPlugin.OnEnable
- RaiseHostAppEvent()
- End Sub
- Private Sub RaiseHostAppEvent()
- pm.LoeseEventAus()
- End Sub
- End Class
Könnt ihr mir helfen? wie erstelle ich ein Event in meiner SDK und Behandle das in der Hostanwendung und wie löse ich das Event der SDK im Plugin aus, das in der Anwendung etwas passiert. Bitte helft mir brauche das sehr dringend.