Я знайшов це питання та деякі відповіді дуже корисними, однак у мене виникли проблеми із шляхами, тому ця відповідь охоплюватиме завантаження бібліотеки шляхом пошуку шляху до каталогу.
Перше рішення:
string assemblyName = "library.dll";
string assemblyPath = HttpContext.Current.Server.MapPath("~/bin/" + assemblyName);
Assembly assembly = Assembly.LoadFrom(assemblyPath);
Type T = assembly.GetType("Company.Project.Classname");
Company.Project.Classname instance = (Company.Project.Classname) Activator.CreateInstance(T);
Друге рішення
string assemblyName = "library.dll";
string assemblyPath = HttpContext.Current.Server.MapPath("~/bin/" + assemblyName);
Assembly assembly = Assembly.LoadFile(assemblyPath);
(Company.Project.Classname) instance = (Company.Project.Classname) assembly.CreateInstance("Company.Project.Classname");
Ви можете використовувати той же принцип для інтерфейсів (ви б створювали клас, але передавали інтерфейс), наприклад:
(Company.Project.Interfacename) instance = (Company.Project.Interfacename) assembly.CreateInstance("Company.Project.Classname");
Цей приклад призначений для веб-додатків, але подібний може бути використаний для настільних додатків, лише шлях вирішується, наприклад, іншим способом
Path.GetDirectoryName(Application.ExecutablePath)