2013-03-24 2 views
0

Мне нужно выполнить метод в сборке, загруженной во время выполнения. Сборки, которые я собираюсь загрузить, - это плагины, которые содержат реализации интерфейса.Загрузить типы из DLL во время выполнения

Это класс загрузки:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.IO; 
using System.Reflection; 

namespace Stub.Logic { 
    public class DllReader { 
     private static List<Type> connectionTypes = new List<Type>(); 

     public static void LoadConnectionTypes(string path) { 
      DirectoryInfo dllDirectory = new DirectoryInfo(path); 
      FileInfo[] dlls = dllDirectory.GetFiles("*.dll"); 
      foreach (FileInfo dllFileInfo in dlls) { 
       Assembly assembly = Assembly.Load(dllFileInfo.FullName); 
       connectionTypes.AddRange(assembly.GetTypes()); 
      } 
     } 

     //public static Connection GetConnection(string connectionTypeName) { 
     // return new Connection(); 
     //} 
    } 
} 

Я получаю эту ошибку:

Could not load file or assembly '..\Plugins\MqConnection.dll' or one of its dependencies. The given assembly name or codebase was invalid. (Exception from HRESULT: 0x80131047)

Это загруженная сборка:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Xml.Linq; 
using System.IO; 
using Stub.Logic; 

namespace MqConnection { 

    public class MqConnection : Connection { 
     // Stuff here... 
    } 
} 

Что я делаю неправильно?

ответ

Смежные вопросы