日期:2014-05-17  浏览次数:21086 次

C#.NET插件式开发
如题,不明白winform中怎么开发插件,原理是什么?
winform 插件

------解决方案--------------------
新建一个类库,定义一个接口 interface IPlugin { void somefunction(); }
新建一个类库,最为一个插件,引用刚才那个接口,编写一个实现类
public class  Plugin1 : IPlugin
{
    public void somefunction() { /* 写一些代码在这里 */ }
}
在主程序中引用接口的类库。
使用反射加载插件的类库。然后转换成接口类型,调用。

你可以编写很多插件,放在一个叫plugins的目录下
你可以在主程序中遍历这个目录,然后反射加载每个插件。也可以在配置文件中指定插件名和路径。

将接口dll分发给第三方开发商,他们就可以为你开发新的插件了。

无需更新主程序,只要放入新的插件,就有了新的功能。
------解决方案--------------------
贴你个例子 ,Good luck
下面是自己写一个简单的例子:

先定义一个接口,将其生成dll文件,命名为server.dll

using System.Text; 

  

namespace PluginInterface 



    public interface IShow 

    { 

        void Show(); 

    } 



然后写主程序,引用server.dll,将主程序生成.exe的可执行文件 

using System; 

using System.Collections.Generic; 

using System.ComponentModel; 

using System.Data; 

using System.Drawing; 

using System.Linq; 

using System.Text; 

using System.Windows.Forms; 

using System.IO; 

using System.Reflection; 

using PluginInterface; 

  

namespace MainFormProj 



    public partial class Form1 : Form 

    { 

        public Form1() 

        { 

            InitializeComponent(); 

            try 

            { 

                string path = Application.StartupPath; 

                path = System.IO.Path.Combine(path, "Plugins"); 

                foreach (string file in System.IO.Directory.GetFiles(path, "*.dll")) 

                { 

                    listBox1.Items.Add(file.Substring(file.LastIndexOf("\\") + 1)); 

                } 

                listBox1.Click += newEventHandler(listBox1_Click); 

            } 

     &nbs