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

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

点击次数:33 次 发布日期:2008-11-26 12:31:15 作者:源代码网
源代码网推荐      《ADD key="PageStartPlugIns" value="" /》
源代码网推荐  
源代码网推荐   value里面可以写入嵌入的PlugIn的列表,格式像这样:Value = "插件一的类名, 插件一的程序集名; 插件二的类名, 插件二的程序集名"
源代码网推荐  
源代码网推荐   然后,我们构建一个PlugInHelper类,来执行获取PlugIn、执行PlugIn的操作:
源代码网推荐  
源代码网推荐   namespace ASPNetPortal.PlugIns {
源代码网推荐  
源代码网推荐   public class PlugInHelper {
源代码网推荐  
源代码网推荐   private PlugInHelper() {}
源代码网推荐  
源代码网推荐   public static PlugInCollection GetPlugIns(String plugInType) {
源代码网推荐   PlugInCollection plugIns = new PlugInCollection();
源代码网推荐   String sPageStartPlugIns = System.Configuration.ConfigurationSettings.AppSettings[plugInType];
源代码网推荐   if ((sPageStartPlugIns != null) && (sPageStartPlugIns != "")) {
源代码网推荐   String[] asPlugInStr = sPageStartPlugIns.Split(";"); foreach(String plugInStr in asPlugInStr) {
源代码网推荐   plugIns.Add( (IPageStartPlugIn) System.Activator.CreateInstance(System.Type.GetType(plugInStr)));
源代码网推荐   }
源代码网推荐   }
源代码网推荐   return plugIns;
源代码网推荐   }
源代码网推荐  
源代码网推荐   public static void ExecutePlugIns(PlugInCollection plugIns, IPlugInArgs args) {
源代码网推荐   foreach(IPlugIn plugIn in plugIns) {
源代码网推荐   plugIn.DoAction(args);
源代码网推荐   }
源代码网推荐   }
源代码网推荐   }
源代码网推荐   }
源代码网推荐  
源代码网推荐   GetPlugIns()方法返回指定类型的PlugIn的列表,返回类型是PlugInCollection,ExecutePlugIns()用来执行参数中的PlugIn。
源代码网推荐  
源代码网推荐   最后,我们要把执行插件的代码加入到页面的执行队列中。为了在每个页面开始的时候能够执行用户嵌入的Page Start Plug,标准方法是在Global.asa里面来实现,更标准的方法是构建一个httpModule,然后在这个httpModule中来执行这个PlugIn(关于构建自定义的httpModule,辣椒是个中高手)。我这里就偷懒了,因为IBuySpy几乎所有的内容页面都是DesktopDefault.aspx这个页面中载入,所以我们先在这个页面里面创建一个方法来执行插件:
源代码网推荐  
源代码网推荐   private void PerformPlugIns() {
源代码网推荐   PlugInCollection plugIns = PlugInHelper.GetPlugIns("PageStartPlugIns");
源代码网推荐   PlugInArgs args = new PlugInArgs(Context, null);
源代码网推荐   PlugInHelper.ExecutePlugIns(plugIns, args);
源代码网推荐   }
源代码网推荐  
源代码网推荐   第一句得到所有的Page Start PlugIn,第二句创建一个传递给插件的PlugInArgs对象,第三句调用PlugInHelper.ExecutePlugIns()来执行第一句得到的PlugIn队列。
源代码网推荐  
源代码网推荐   在DesktopDefault.aspx的Page_Init事件中调用上面的这个PerformPlugIns()方法就OK了。
源代码网推荐  
源代码网推荐   3、演示如何创建一个Page Start PlugIn:
源代码网推荐  
源代码网推荐   前面两步已经让IBuySpy可以嵌入用户自定义的Page Start PlugIn了,现在我们来做一个实际的PlugIn嵌进去。
源代码网推荐  
源代码网推荐   启动VS,创建一个“C#类库”项目,引入IBuySpy的程序集Portal.dll,这是因为我们需要用到IBuySpy里面的PlugIn相关的那些接口,更好的方法是把IBuySpy中与PlugIn相关的公共接口放在一个单独的程序集里面。
源代码网推荐  
源代码网推荐   namespace WelcomeMessage {
源代码网推荐  
源代码网推荐   public class ShowWelcome : ASPNetPortal.PlugIns.IPageStartPlugIn {
源代码网推荐  
源代码网推荐   public string Name {
源代码网推荐   get {
源代码网推荐   return "Show Page Welcome Message";
源代码网推荐   }
源代码网推荐   }
源代码网推荐  
源代码网推荐   public string Version {
源代码网推荐   get {
源代码网推荐   return "1.0.0.1";
源代码网推荐   }
源代码网推荐   }
源代码网推荐  
源代码网推荐   public void DoAction(IPlugInArgs args) {
源代码网推荐   args.Context.Response.Write(“<_script_>alert(‘Hello, world!’);”); // 故意写错了,不然...
源代码网推荐   }
源代码网推荐   }
源代码网推荐   }
源代码网推荐  
源代码网推荐   这个ShowWelcome类继承自IPageStartPlugIn,表示它是一个Page Start PlugIn,用来具体执行操作的DoAction()方法只做了一件事,从参数中得到页面相关的HttpContext对象,然后输出一段字符以在页面内容载入之前弹出一个“Hello,world!”的提示框。
源代码网推荐  
源代码网推荐   然后我们修改IBuySpy的web.config里面相关的那句设定:
源代码网推荐  
源代码网推荐   《ADD value="WelcomeMessage.ShowWelcome, WelcomeMessage" key="PageStartPlugIns" /》
源代码网推荐  
源代码网推荐   OK了,编译,把生成的dll放到IBuySpy的bin目录,打开浏览器浏览IBuySpy网站,你会看到每次载入页面内容时,都会弹出一个“Hello,world!”的提示框。
源代码网推荐    做人要厚道,请注明转自酷网动力(www.ASPCOOL.COM)。
源代码网推荐


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