• 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!

  • 相关阅读:
    c++11 内存模型解读
    无锁队列的实现
    c++中的原子操作
    还是说Memory Model,gcc的__sync_synchronize真是太坑爹了
    对于Linux平台下C语言开发中__sync_函数的认识
    理解 Memory barrier
    pthread_barrier_init,pthread_barrier_wait简介
    explicit构造函数的作用
    droofs
    27.
  • 原文地址:https://www.cnblogs.com/vsignsoft/p/839309.html
Copyright © 2020-2023  润新知