I’m using the following code in a vb.net 2008 project to dynamically load dll’s (with forms) from a folder, all works great however I can’t figure out for the life of me how to call a function or get a public variable from the plugins.
Can anyone answer this issue for me?
Dim PluginList As String() = Directory.GetFiles(appDir, "*.dll")
For Each Plugin As String In PluginList
Dim Asm As Assembly
Dim SysTypes As System.Type
Asm = Assembly.LoadFrom(Plugin)
SysTypes = Asm.GetType(Asm.GetName.Name + ".frmMain")
Dim IsForm As Boolean = GetType(Form).IsAssignableFrom(SysTypes)
If IsForm Then
Dim tmpForm As Form = CType(Activator.CreateInstance(SysTypes), Form)
You should probably create an interface in a common assembly and have your form implement it, this way you can cast you dynamically loaded object as your interface type.
Interface Assembly
Plugin Assembly