title: Using reflection to get all classes of certain base type in dll
body: <p>I have a dll that contains a number of classes that all inherit from a CommandBase class. I'm trying to get instances of all of these classes (CommandA, CommandB, CommandC, etc...) using reflection in C# so that I can call a specific method on each one. Here is what I have so far:</p>
  
  <pre><code>//get assemblies in directory.
  string folder = Path.Combine(HttpContext.Current.Server.MapPath("~/"), "bin");
  var files = Directory.GetFiles(folder, "*.dll");
  //load each assembly.
  foreach (string file in files)
  {
    var assembly = Assembly.LoadFile(file);
    if (assembly.FullName == "MyCommandProject")
    {
      foreach (var type in assembly.GetTypes())
      {
        if (!type.IsClass || type.IsNotPublic) continue;
        if(type is CommandBase)
        {
          var command = Activator.CreateInstance(type) as CommandBase;
        }
      }
    }
  }
  </code></pre>
  
  <p>I'm having 2 issues. The 1st issue is that the line "if(type is CommandBase") gives the following warning:</p>
  
  <p><strong>The given expression is never of the provided type CommandBase.</strong></p>
  
  <p>The 2nd issue is that I can't figure out how to get an instance of the actual object (CommandA, CommandB, etc...), just converting it to CommandBase isn't enough.</p>