ฉันพบคำถามนี้และคำตอบมีประโยชน์มาก แต่ฉันมีปัญหาเส้นทางดังนั้นคำตอบนี้จะครอบคลุมการโหลดไลบรารีโดยการค้นหาเส้นทางไดเรกทอรี bin
วิธีแก้ปัญหาแรก:
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)