首页 > 代码库 > 简单的C#动态加载dll并转换类型

简单的C#动态加载dll并转换类型

可以通过该方法来实现程序插件化。

 

假设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"