• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1943
  • Last Modified:

Loading modules (.dll) dynamically in VB.Net 2005

Hi all,

i'm wondering if it is possible (and how) to dynamically load pieces of my program.

I'd like to create different parts of my program and compile them as dll's.  Then my main program will load the dll's that it finds in a folder.

For example,

in my .\Plugins folder I have the following:

Orders.dll
Inventory.dll
Customers.dll

(each of them is part of a GUI - with interfaces to access a Panel, MenuItem, and TreeNode)

when my program loads, it will look in .\Plugins and load each of the dlls it finds (each one will have the same entry format)

on an update i add Ledger.dll to the .\Plugins folder, and the next time the program runs, it loads Ledger.dll also.

can this be done? or do i need to hard-code the declarations?

thanks!

J
0
sgaggerj
Asked:
sgaggerj
  • 2
  • 2
3 Solutions
 
PaulHewsCommented:
It can be done.  Assuming you want them to derive from a common interface, you create the interface first in an assembly, and reference that in both the client and plugins.  Then you can create instances using reflection.
Private Function GetPluginFromAssembly(ByVal PluginAssembly As String, ByVal PluginClassName As String, ByVal PluginAssemblyPath As String) As PluginBase.IPlugin
    Dim oCurrentAssembly As [Assembly] = System.Reflection.Assembly.GetExecutingAssembly()
    Dim oTemplateAssembly As [Assembly]
    Dim oPlugin As Object
    Dim sTemplateNameAndPath As String = System.IO.Path.Combine(PluginAssemblyPath, PluginAssembly)
    If System.IO.File.Exists(sTemplateNameAndPath) Then
        oTemplateAssembly = Assembly.LoadFrom(sTemplateNameAndPath)
        oPlugin = Activator.CreateInstance(oTemplateAssembly.GetType(PluginClassName, True))
        Return CType(oPlugin, PluginBase.IPlugin)
    End If
 
End Function

Open in new window

0
 
sgaggerjAuthor Commented:
Thanks - could you elaborate a little more? Maybe an example?
0
 
Éric MoreauSenior .Net ConsultantCommented:
0
 
PaulHewsCommented:
It's fairly involved.  There are some articles that can walk you through all the concepts:

Interfaces
http://www.developer.com/lang/other/article.php/939411

Plugin architecture in vb.net
http://www.developerfusion.co.uk/show/4371/
0
 
sgaggerjAuthor Commented:
that seems to help out alot more!

thanks!
0

Featured Post

VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

  • 2
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now