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!

原文地址:https://www.cnblogs.com/vsignsoft/p/839309.html