程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> 給IBuySpy構建一個PlugIn系統

給IBuySpy構建一個PlugIn系統

編輯:.NET實例教程
     話說公元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 IPlugIn this[Int32 index] {
   get {
   return (IPlugIn) this.List[index];
   }
   }
   }
  }
  
  很簡單明了。用戶可能不止嵌入一個插件。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved