zoukankan      html  css  js  c++  java
  • Develope Application support plugin

    How application that support plug-in ?

    1. application knows some fixed interfaces.
    2. plug-in class must implement the fixed interface.
    3. using reflection mechanism to dynamic load plug-in.

    so, the step:
    1. define fixed interface.
    2. develope plug-in class  that implement the fixed interface.
    3. main application dynamic load the plug-in.

    e.g.

    // ---------------- Fixed plugIn Interface--------------------
    namespace PlugIn
    {
        public interface IPlugIn
        {
            void ShowInfo();
        
    }

    }
    // ------- PlugIn Module ------------
    using PlugIn;

    namespace PlugInModule
    {
        public class Class 
    : IPlugIn
        {
            #region IPlugIn Members

            void IPlugIn.ShowInfo()
            {
                MessageBox.Show("This class implement IPlugIn interface", "PlugInModule")
    ;
            
    }


            #endregion
        }
    }
    // ------------ Main Application ----------
      private void PlugIn_Click(object sender, EventArgs e)
            
    {
                OpenFileDialog dlg = new OpenFileDialog();
                if (dlg.ShowDialog() == DialogResult.OK)
                {
                    Assembly asm = Assembly.LoadFrom(dlg.FileName);
                    Type[] asmTypes = asm.GetTypes();
                    for (int i = 0; i < asmTypes.Length; i++)
                    {
                        Type interfaceType = asmTypes[i].GetInterface("IPlugIn");
                        if (interfaceType != null)
                        {
                            object objInstance = asm.CreateInstance(asmTypes[i].FullName);
                            IPlugIn IPlug = objInstance as IPlugIn;
                            if (IPlug != null)
                            {
                                listBox1.Items.Add(asmTypes[i].FullName);
                                IPlug.ShowInfo();
                            
    }

                        }
                    }
                }            
            }





    That's all!
    Fine Day!

  • 相关阅读:
    2w字 + 40张图带你参透并发编程!
    完了,这个硬件成精了,它竟然绕过了 CPU...
    一文详解 Java 并发模型
    详解匈牙利算法与二分图匹配
    机器学习 | 详解GBDT在分类场景中的应用原理与公式推导
    Python | 浅谈并发锁与死锁问题
    LeetCode 91,点赞和反对五五开,这题是好是坏由你来评判
    LeetCode 90 | 经典递归问题,求出所有不重复的子集II
    【Azure DevOps系列】什么是Azure DevOps
    MSIL入门(四)之委托delegate
  • 原文地址:https://www.cnblogs.com/vsignsoft/p/839309.html
Copyright © 2011-2022 走看看