簡易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"
相關文章
相關標籤/搜索