简易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类的项目文件,以得到接口。

如果是连同依赖项一起被载入,应该调用Assembly.LoadFrom

A类输出结果:

"Test Ok"
原文地址:https://www.cnblogs.com/hont/p/3800581.html