Hallo Leute,
ich arbeite aktuell an einer Software, welche Plugins läd. Nun möchte ich aber das gleiche Plugin mehrfach instanzieren. Jegliche Versuche sind bisher gescheitert.
Mein PluginInterfaace sieht so aus:
Die Plugins werden nach Bedarf einem TreeView hinzugefügt:
Das TreeView speichere ich so:
//Der Quellcode ist auf das nötigste reduziert und die Variablen für diese Zwecke angepasst
Das Plugin selbst speichert seine Einstellungen. Allerdings speichert das Plugin nur die Einstellungen welche zuletzt durchlaufen werden. Irgendwie muss ich bei jedem Hinzufügen im TreeView eine neue Instanz vom Plugin erstellen - aber wie?
Activator.CreateInstance bringt keinen Unterschied.
Eine Klasse mit implements IalarmPlugins und dem Konstruktor New bringt auch keine Änderung.
Hat jemand eine Idee wie ich das ganze umsetzen kann OHNE das Plugin mehrfach in den Ordner zu legen?
LG Dietzi
ich arbeite aktuell an einer Software, welche Plugins läd. Nun möchte ich aber das gleiche Plugin mehrfach instanzieren. Jegliche Versuche sind bisher gescheitert.
Mein PluginInterfaace sieht so aus:
Die Plugins werden nach Bedarf einem TreeView hinzugefügt:
Das TreeView speichere ich so:
VB.NET-Quellcode
- Public Sub saveEvents()
- pluginCounter = 0
- Dim xml1 As New Xml.XmlDocument()
- Dim s As String = "<Events>"
- For Each t As TreeNode In TreeView1.Nodes
- Dim p As IalarmPlugins = t.Tag
- p.PluginUID = pluginCounter
- s += "<action name=""" + p.GUID + """ value=""" + p.PluginUID.ToString + """>"
- pluginCounter += 1
- For Each t2 As TreeNode In t.Nodes
- saveAlarmEventsHelper(t2, s)
- Next
- s += "</action>"
- Next
- s += "</Events>"
- xml1.InnerXml = s
- xml1.Save(Application.StartupPath + "/Actions.dat")
- End Sub
- Private Sub saveAlarmEventsHelper(ByVal node As TreeNode, ByRef xml As String)
- Dim p As IalarmPlugins = node.Tag
- p.PluginUID = pluginCounter
- pluginCounter += 1
- xml += "<action name=""" + p.GUID + """ value=""" + p.PluginUID.ToString + """>"
- For Each t As TreeNode In node.Nodes
- saveAlarmEventsHelper(t, xml)
- Next
- xml += "</action>"
- End Sub
//Der Quellcode ist auf das nötigste reduziert und die Variablen für diese Zwecke angepasst
Das Plugin selbst speichert seine Einstellungen. Allerdings speichert das Plugin nur die Einstellungen welche zuletzt durchlaufen werden. Irgendwie muss ich bei jedem Hinzufügen im TreeView eine neue Instanz vom Plugin erstellen - aber wie?
Activator.CreateInstance bringt keinen Unterschied.
Eine Klasse mit implements IalarmPlugins und dem Konstruktor New bringt auch keine Änderung.
Hat jemand eine Idee wie ich das ganze umsetzen kann OHNE das Plugin mehrfach in den Ordner zu legen?
LG Dietzi
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „dietzi“ ()