Tôi thấy câu hỏi này và một số câu trả lời rất hữu ích, tuy nhiên tôi đã gặp vấn đề về đường dẫn, vì vậy câu trả lời này sẽ bao gồm thư viện tải bằng cách tìm đường dẫn thư mục bin.
Giải pháp đầu tiên:
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);
Giải pháp thứ hai
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");
Bạn có thể sử dụng cùng một nguyên tắc cho các giao diện (bạn sẽ tạo một lớp nhưng chuyển sang giao diện), chẳng hạn như:
(Company.Project.Interfacename) instance = (Company.Project.Interfacename) assembly.CreateInstance("Company.Project.Classname");
Ví dụ này dành cho ứng dụng web nhưng có thể được sử dụng tương tự cho ứng dụng Máy tính để bàn, chỉ có đường dẫn được giải quyết theo cách khác, ví dụ:
Path.GetDirectoryName(Application.ExecutablePath)