Petshop4 0之「反射注入」技術

2021-04-14 00:26:55 字數 2071 閱讀 6223

所謂「依懶注入」就是將應用程式所依賴的元件在執行時動態的載入到應用

程式中。依賴注入的目標並非為應用程式新增更多的功能,而是提公升了元件的

重用性,並為應用程式搭建乙個具有較強靈活性和擴充套件性的平台。在程式實現上就用

assembly.load(assemblyname).createinstance(typename)在程式執行時動態建立例項.petshop4.0中多次應用了與配置檔案相強合的反射注入技術。下面就介紹一下反射注入技術在petshop4.0多層應用程式和應用。

專案名

petshop.cachedependencyfactory

類名

dependencyaccess

方法

privatestaticipetshopcachedependency loadinstance(

string classname)

配置檔案中的值

……….

……

**檔案中的實現

string path=

string fullyqualifiedclass = path +

"." + classname;

return (

ipetshopcachedependency)assembly.load(path)

.createinstance(fullyqualifiedclass);

從上面的實現來看其實是很簡單的。三個步驟就實現了:兩前個步驟,主要是為動態建立

例項提供引數:程式集名稱,和類名稱(型別名)

.1.    執行

程式集的名稱

assemblyname。

2.    組合類名稱

typename。

3.    執行

assembly.load(assemblyname).createinstance(typename)進行動太建立例項

其實 petshop4.0中實現反射注入技術都是上面的那種思想。所以下面就省去配置檔案中的

資訊和實現的**實現資訊,只是統計反射注入技術在

petshop4.0中應用的位置資訊。

專案名

petshop.dalfactory 類名

dataaccess 方法

1. public

static petshop.idal.icategory createcategory()

2.public

static petshop.idal.iinventory createinventory()

3.public

static petshop.idal.iitem createitem()

4.public

static petshop.idal.iorder createorder()

5.public

static petshop.idal.iproduct createproduct()

專案名

petshop.messagingfactory 類名

queueaccess 方法

public

static petshop.imessaging.iorder createorder()

專案名

petshop.profiledalfactory 類名

dataaccess 方法

publics tatic

petshop.iprofiledal.ipetshopprofileprovider

createpetshopprofileprovider()

專案名

petshop.profiledalfactory

類名

dataaccess

方法

publics tatic

petshop.iprofiledal.

ipetshopprofileprovider

createpetshopprofileprovider()

feedback

Petshop4 0之「反射注入」技術

所謂 依懶注入 就是將應用程式所依賴的元件在執行時動態的載入到應用 程式中。依賴注入的目標並非為應用程式新增更多的功能,而是提公升了元件的 重用性,並為應用程式搭建乙個具有較強靈活性和擴充套件性的平台。在程式實現上就用 assembly.load assemblyname createinstanc...

PetShop 4 0 安裝問題

1.無法直接啟動帶有 類庫輸出型別 的專案 若要除錯此專案,請在此解決方案中新增乙個引用庫專案的可執行專案。將這個可執行專案設定為啟動項 經查詢處理方法 出錯原因 在同乙個解決方案裡面有多個專案,被設定成啟動專案的是類庫專案,類庫專案是被編譯成dll檔案給別的專案使用的,是不可執行的專案.解決辦法 ...

Petshop4 0學習筆記二 利用反射程式設計

petshop.idal.icategory assembly.load petshop.sqlserverdal createinstance petshop.sqlserverdal.category 分析這句 petshop.idal.icategory 強型別轉換 assembly類,可以引...