摘要
如果我們已經(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對象:
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