zoukankan      html  css  js  c++  java
  • .Net动态加载插件-反射

    /// <summary>
            /// 动态加载插件
            /// </summary>
            void LoadPlugin()
            {
                string[] ps = Directory.GetFiles("Plugins");
                IXCodePlugin ixp;
                //获取插件接口的Type对象
                Type tixp = typeof(IXCodePlugin);
    
                foreach (string item in ps)
                {
                    //加载某个程序集文件,得到Assembly对象
                    Assembly asm = Assembly.LoadFile(Path.GetFullPath(item));
                    //获取程序集中的所有公共类型
                    Type[] ts = asm.GetTypes();
    
                    foreach (Type t in ts)
                    {
                        //判断程序集是否实现了IXCodePlugin接口
                        if (tixp.IsAssignableFrom(t))
                        {
                            //将实现了接口的类型完成实例化,以方便调用
                            ixp = (IXCodePlugin)Activator.CreateInstance(t);
                            string type = ixp.Type().ToLower();
     
                        }
                    }
                }
            }
    总共分一下几步:
    1.遍历存放插件的文件夹,
    2.获取插件接口的Type对象,
    3.获取程序集中的所有公共类型
    4.判断是否实现了,插件的接口
    5.实例化实现了插件接口的类得到对象
    6.调用插件中的方法


  • 相关阅读:
    Redis持久化
    Redis配置文件详解
    Linux
    有图有真相
    Redis五大数据类型
    Redis基本知识
    Mysql主从复制
    Python脚本实现KVM虚机添加磁盘
    JQuery制作环形进度条
    JQuery制作标签
  • 原文地址:https://www.cnblogs.com/fuhaots2009/p/3473351.html
Copyright © 2011-2022 走看看