摘要

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

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

附:代碼下載

例子:形狀工廠

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

seo優(yōu)化培訓(xùn),網(wǎng)絡(luò)推廣培訓(xùn),網(wǎng)絡(luò)營銷培訓(xùn),SEM培訓(xùn),網(wǎng)絡(luò)優(yōu)化,在線營銷培訓(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