逐步解说: 插件

插件是一种遵循一定规范的应用程序接口编写出来的程序。

*编译出的 dll 文件不能改变文件名称,否则会出现“找到的名为'ChildFrm'的程序集清单定义与程序集引用不匹配”
*本例子是以 windows 运行方式演示的,Asp.net下也类似,不过文件名称的读取如下:
string sv=ConfigurationSettings.AppSettings["file name"]; //从 Web.config 中读取(已试验)

1、创建一个ClassLibray程序,在这个ClassLibray中定义一个接口作为插件接口
这个dll将为 Windows程序 Main.exe 和 插件ClassLibray提供 公共接口定义
//命名 InfBase.dll
namespace InfBase
{
 /// <summary>
 /// Class1 的摘要说明。
 /// </summary>
 public interface IChildFormBase
 {
  int Open(string s);
 }
}
2、创建一个Windows程序:Main.exe,增加插件接口 InfBase.dll的引用。

3. 创建插件 ChildFrm1.dll
namespace InfBase
{
 public class ChildFrm:IChildFormBase
 {
  public ChildFrm()
  {
  }
                //实现插件接口定义的 Open(string s)方法
  public int Open(string s)
  {
                   return 0;
  }
 }
}
4. 在Windows程序 Main.exe 中使用插件:
if(openFileDlg.ShowDialog() == DialogResult.OK)
{
    string filename=openFileDlg.FileName;
    //Load一个ClassLibrary: 插件
    Assembly a = Assembly.LoadFrom(filename);
    //使用 命名空间(namespace),利用.net的反射机制将对象创建起来
    //所以,所有的插件使用一个有规律的命名空间,例如使用相同的命名空间或,便于主程序创建插件中的对象
    object obj=a.CreateInstance("InfBase.ChildFrm");
    if(obj!=null)
    {
        //将object强制转换成插件接口
        IChildFormBase f=(IChildFormBase)obj;
        int v=f.Open("test");
        MessageBox.Show(v.ToString());
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值