zoukankan      html  css  js  c++  java
  • 简易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"
  • 相关阅读:
    自定义Python枚举
    解决Django跨域访问的问题
    BBS项目细节总结
    面向对象进阶
    面向对象
    三级菜单
    常用模块
    内置函数与匿名函数及递归
    迭代器和生成器
    函数
  • 原文地址:https://www.cnblogs.com/hont/p/3800581.html
Copyright © 2011-2022 走看看