可以通过该方法来实现程序插件化。
假设A,B两个类,A类为宿主,B类为插件需要加载到A类中:
class Program { public interface IHellow { void Hellow(); } static void Main(string[] args) { Assembly ass = Assembly.LoadFrom("D:/xx.dll"); var wormMain = ass.GetTypes().FirstOrDefault(m => m.GetInterface(typeof(IHellow).Name) != null); var tmpObj = (IHellow)Activator.CreateInstance(wormMain); tmpObj.Hellow(); Console.Read(); } }
A类为宿主类
namespace ClassLibrary1 { public class WormMain : IHellow { public void Hellow() { Console.WriteLine("Test Ok"); } } }
B类插件类
需要引用一下A类的项目文件,以得到接口。
A类输出结果:
"Test Ok"
简单的C#动态加载dll并转换类型,布布扣,bubuko.com
时间: 2024-10-01 07:27:04