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!

  • 相关阅读:
    【6】肿瘤胚系突变遗传分析及数据库使用
    【5】肿瘤DNA甲基化数据分析原理及流程
    【4】肿瘤转录组测序分析流程及相关软件
    【3】肿瘤基因组数据分析方法概述
    【2】肿瘤基因检测相关技术原理
    MySQL数据排序asc、desc
    python的数据类型
    Python minidom模块(DOM写入和解析XML)
    python基础----特性(property)、静态方法(staticmethod)、类方法(classmethod)、__str__的用法
    python os.path模块常用方法详解
  • 原文地址:https://www.cnblogs.com/vsignsoft/p/839309.html
Copyright © 2011-2022 走看看