简易C#动态加载dll(实现插件化)

能够经过该方法来实现程序插件化。ide

 

假设A,B两个类,A类为宿主,B类为插件须要加载到A类中:spa

 

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.LoadFromcode

 

A类输出结果:orm

"Test Ok"
相关文章
相关标签/搜索