天天看點

即插即用插件式架構的程式集處理

摘要:

在多層架構中我們經常都會通過工廠模式來對資料庫層的類進行初始化,有些會用抽象類作為基類,有些會用接口然後通過反射來對其進行初始化。而把需要初始化的類型和程式集通過字元串儲存在配置檔案中或資料庫中等等,今天我将要介紹的是不需要儲存配置檔案而去BIN目錄尋找你所要的抽象類或接口的子類并将其初始化後傳回。這種方法可以用在其他方面,當然這會對應用程式的性能造成影響,是以我們應該适當的應用他。

檢索程式集:

每一個寫程式的人都知道,程式就是像建房子,首先要先規劃設計然後一塊磚一塊磚的從地基開始建起。我們要知道在BIN目錄中檢索類,首先需要知道的是我們如何從一個程式集中檢索我們所需要的類型。我們先看如下代碼:

複制  儲存

代碼說明:

asm:目前要檢索的程式集,我們可以通過asm.GetTypes()來擷取目前程式集中所有類型,然後在循環比對通過判斷是否類目前類型(type)的子類而将其儲存在ArrayList中。由于可能會涉及到好幾個類型,而又不是強類型我們用ArrayList來儲存初始化後的對象(types),代碼很簡單基本上能夠看的懂,這裡就不多說了。

BIN目錄檢索:

我們知道了在程式集中如何檢索類并初始化那在BIN目錄中檢索程式集那就更簡單了,沒什麼好說的了看代碼:

總結:

以上是在BIN目錄中檢索,如果BIN不存在就在目前基目錄中檢索,我們可以設定一個屬性來儲存這個目錄而不一定目錄這樣我們就可以在其它目錄中取得我們所要的對象。檢索各個程式集肯定會損失不少性能,我們可以指定程式集因為往往我們的程式集都是有規則的,因為對我來說一般都是資料層中用到這個東東。初始化一個對象不容易啊,我們在初始化後何不把它緩存起來呢這樣就可以提高一定的性能了。其實大多數我們在配置檔案XML中配置就可以了,而不要用到這些,最後還是希望能夠給大家帶了點什麼!