摘要

如果我們已經(jīng)知道了一個(gè)類所有的依賴項(xiàng),在我們只需要依賴項(xiàng)的一個(gè)實(shí)例的場(chǎng)景中,在類的構(gòu)造函數(shù)中引入一系列的依賴項(xiàng)是容易的。但是有些情況,我們需要在一個(gè)類里創(chuàng)建依賴項(xiàng)的多個(gè)實(shí)例,這時(shí)候Ninject注入就不夠用了。也有些情況,我們不知道一個(gè)消費(fèi)者可能需要哪個(gè)服務(wù),因?yàn)樗赡茉诓煌膱?chǎng)合下需要不同的服務(wù),而且在創(chuàng)建類的時(shí)候?qū)嵗幸蕾図?xiàng)也不合理。這樣的情況,動(dòng)態(tài)工廠可以幫忙。我們可以設(shè)計(jì)我們的類讓他依賴一個(gè)工廠,而不是依賴這個(gè)工廠能夠創(chuàng)建的對(duì)象。然后,我們能夠命令工廠去通過命令創(chuàng)建需要的類型和任意需要的數(shù)量。下面兩個(gè)例子解決上面兩個(gè)問題。Ninject動(dòng)態(tài)工廠創(chuàng)建指定數(shù)量的依賴項(xiàng)和創(chuàng)建指定類型的依賴項(xiàng)。

這篇文章只介紹Ninject動(dòng)態(tài)工廠創(chuàng)建指定數(shù)量的依賴項(xiàng),下一篇文章介紹Ninject動(dòng)態(tài)工廠創(chuàng)建指定類型的依賴項(xiàng)。

附:代碼下載

例子:形狀工廠

在第一個(gè)例子中,我們將創(chuàng)建一個(gè)圖形動(dòng)態(tài)庫(kù)。它包含一個(gè)ShapService類,提供一個(gè)AddShapes方法來給指定的ICanvas對(duì)象添加指定數(shù)量具體的IShape對(duì)象:

seo優(yōu)化培訓(xùn),網(wǎng)絡(luò)推廣培訓(xùn),網(wǎng)絡(luò)營(yíng)銷培訓(xùn),SEM培訓(xùn),網(wǎng)絡(luò)優(yōu)化,在線營(yíng)銷培訓(xùn)

 1     public void AddShapes(int circles, int squares, ICanvas canvas) 2     { 3         for (int i = 0; i < circles; i++) 4         { 5             var circle = new Circle(); 6        &nbs
        
		

網(wǎng)友評(píng)論