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!

  • 相关阅读:
    HTTP协议 (二) 基本认证
    HTTP协议详解
    Wireshark基本介绍和学习TCP三次握手
    Fiddler 教程
    UNIX网络编程——线程池模式比较(ICE线程池模型和L/F领导者跟随者模式)
    修改一行SQL代码 性能提升了100倍
    修改一行SQL代码 性能提升了100倍
    vector map 多层嵌套使用
    vector map 多层嵌套使用
    应该记住的话
  • 原文地址:https://www.cnblogs.com/vsignsoft/p/839309.html
Copyright © 2011-2022 走看看