当前位置:首页 > 网络编程 > WEB编程 > ASP.net >  给IBuySpy构建一个PlugIn系统(1)

 给IBuySpy构建一个PlugIn系统(1)

点击次数:31 次 发布日期:2008-11-26 12:31:17 作者:源代码网
源代码网推荐      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 IPlugIn this[Int32 index] {
源代码网推荐   get {
源代码网推荐   return (IPlugIn) this.List[index];
源代码网推荐   }
源代码网推荐   }
源代码网推荐   }
源代码网推荐   }
源代码网推荐  
源代码网推荐   很简单明了。用户可能不止嵌入一个插件。
源代码网推荐  
源代码网推荐   PlugIn也可以有很多类型,比如我们这里要实现的Page Start PlugIn,是一个在页面载入的时候可以让嵌入的PlugIn执行的。当然你也可以创建各种类型的PlugIn。
源代码网推荐  
源代码网推荐   namespace ASPNetPortal.PlugIns {
源代码网推荐  
源代码网推荐   public interface IPageStartPlugIn : IPlugIn {}
源代码网推荐   }
源代码网推荐  
源代码网推荐   这个PlugIn接口不需要再做任何事,直接继承IPlugIn就可以了。
源代码网推荐  
源代码网推荐   2、修改IBuySpy,让它支持执行PlugIn:
源代码网推荐  
源代码网推荐   根据我们的需求,我们创建一个实际的插件参数类,这个类继承自IPlugInArgs:
源代码网推荐  
源代码网推荐   namespace ASPNetPortal.PlugIns {
源代码网推荐  
源代码网推荐   public class PlugInArgs : IPlugInArgs {
源代码网推荐   private System.Web.HttpContext _context;
源代码网推荐   private Object _data;
源代码网推荐  
源代码网推荐   public PlugInArgs(System.Web.HttpContext context, Object data) {
源代码网推荐   _context = context;
源代码网推荐   _data = data;
源代码网推荐   }
源代码网推荐  
源代码网推荐   public System.Web.HttpContext Context {
源代码网推荐   get {
源代码网推荐   return _context;
源代码网推荐   }
源代码网推荐   }
源代码网推荐  
源代码网推荐   public Object Data {
源代码网推荐   get {
源代码网推荐   return _data;
源代码网推荐   }
源代码网推荐   }
源代码网推荐   }
源代码网推荐   }
源代码网推荐  
源代码网推荐   我们需要地方来标示用户嵌入的PlugIn的列表,我们放在web.config里面的里面,我们加上一项,来表示我们要添上的Page Start PlugIn:
源代码网推荐  
源代码网推荐  
源代码网推荐    做人要厚道,请注明转自酷网动力(www.ASPCOOL.COM)。
源代码网推荐


源代码网供稿.
网友评论 (0)
会员中心
网络编程
本站推荐
网络编程之精华