zoukankan      html  css  js  c++  java
  • 给IBuySpy构建一个PlugIn系统

    话说公元2003年12月17日,MSDN Library网站上悄无声息的多了一篇文章,介绍了关于构建一个PlugIn Framework的一些基础知识,于是,有了这篇随笔… PlugIn,很COOL的特性,下面将演示如何给我们的IBuySpy定制一个Page Start PlugIn,这个PlugIn可以让用户自己来创建PlugIn,嵌入到IBuySpy的Page Start PlugIn里面,在网站页面载入的时候,会执行用户嵌入的PlugIn。 可我们为什么要给IBuySpy创建PlugIn接口呢?我们要实现同样的功能,可以直接的修改它的代码,岂不是直接很多?原因:IBuySpy只是用来演示PlugIn的,你可以把同样的技术应用到其他的WebForm甚至WinForm,而它们可能并不会像IBuySpy一样是免费的,我们交付的产品里面不会附上代码,如果我们提供了PlugIn的接口,无疑会让我们的产品更加具有扩展性。何况很多功能可能可以直接作成PlugIn来嵌入到原有的系统中,这个时候无需再改动原有的代码,再去编译它。 1、构建IBuySpy的PlugIn所需的接口,这些接口就是可以公开给用户代码的: 首先需要的是一个通用的IPlugIn接口,所有具体的插件将实现这个接口: namespace ASPNetPortal.PlugIns {  public interface IPlugIn {  String Name {get;}  String Version {get;}  void DoAction(IPlugInArgs args);     }} 这个接口有三个成员:Name属性,公开插件的名称Version属性,公开插件的版本DoAction()方法,执行插件要做的操作,这个方法还有一个IPlugInArgs的参数,需要传递给方法所参数可以通过它传递出去。 然后就是这个IPlugInArgs接口: namespace ASPNetPortal.PlugIns {  public interface IPlugInArgs {   System.Web.HttpContext Context {get;}  Object Data {get;} }} 它有两个成员:Context属性,一个HttpContext类型的对象,如果我们要让插件能够在页面上做些事,不给它HttpContext肯定不行。Data属性,一个Object类型的对象,预留的,什么地方需要就什么地方用上。 接着是一个接口集合类: namespace ASPNetPortal.PlugIns {  public class PlugInCollection : CollectionBase {   public Int32 Add(IPlugIn plugIn) {   return this.List.Add(plugIn);  }   public [...]
  • 相关阅读:
    MySQL连接数过多登录不上
    Linux中盘符的两种挂载方法
    Linux杀毒软件ClamAV初次体验
    VS2013开发asmx接口根据ID查询对象
    VS2013开发asmx接口返回一个自定义XML
    VS2013开发一个简单的asmx接口程序
    Java编译过程(传送门)
    凡人和神学习和使用软件的七个层次
    CentOS7 限制SSH密码尝试次数
    马云是如何招聘到多隆这样的牛人的?(转)
  • 原文地址:https://www.cnblogs.com/kaneboy/p/2333678.html
Copyright © 2011-2022 走看看