title: Createinstance() - Am I doing this right?
body: <p>I'm trying to put together a plugins system with .NET, and I'm not sure if I'm doing it correctly.  The basis of the system is that a specific directory ({apppath}/Plugins/) will have a bunch of precompiled DLLs, and I want to look through each one with reflection, and for every class available, if it inherits a specific base class (this is defined in yet another DLL, but I'll go into that later), then create an instance of it and call a specific function in said instance.</p>
  
  <pre><code>Public Sub ScanPluginsInDirectory(ByVal Directory As String)
  
      Dim Plugins As New IO.DirectoryInfo(Directory)
      Dim Files As IO.FileInfo() = Plugins.GetFiles("*.dll")
      Dim CryptType As Type = GetType(CryptPluginBase)
      Dim PluginsData as List(Of LoadedPluginsInfo)
  
      For Each DllFile As IO.FileInfo In Files
          Try
              Dim thisAsm As Assembly = Assembly.LoadFrom(DllFile.FullName)
              Dim ClassDefs = thisAsm.GetTypes().Where(Function(type) CryptType.IsAssignableFrom(type))
  
              For Each ClassDef As Type In ClassDefs
                  Dim A As Object
                  A = ClassDef.Assembly.CreateInstance(ClassDef.Name)
                  PluginsData.Add(New LoadedPluginsInfo(A.Plugin(), False))
              Next
          Catch ex As Exception
              Continue For
          End Try
      Next
  End Sub
  </code></pre>
  
  <p>The specific problem I have is, I'm not sure this is the right way to do this.  Would the method I'm trying to do work, if it can be assumed that <code>A.Plugin()</code> actually exists and any structures and classes referenced here are bug-free?  If anyone would need more code in order to help, I can post it.</p>