2013-04-10 28 views
4

我有一個Windows服務應用程序,我想使用Ninject作爲我的服務類。有一些服務類別使用其他服務類別,比如說「較低級別」或更通用的服務類別。每項服務通常都需要一個數據存取庫。如何告訴Ninject爲嵌套構造函數注入相同的實例?

因此,例如我有一個IRepository接口,一個IServices1和一個IServices2接口。後兩者有Services1和Services2實現,都有一個類型爲IRepository的構造函數參數。現在假定Services1的實現想要使用IServices2接口的一些方法,所以我給Services1添加了另一個構造函數參數,其類型爲IServices2。現在,當我手動實例化服務1類,我會做吊環,如:

var repo = new MyRepository(); // implementing IRepository 
var service1 = new Services1(repo, new Services2(repo)); 

這樣我可以保證這兩個服務會以相同的存儲庫(這是我的基本要求)工作。

我該如何使用Ninject來爲這個scneario準備一個IServices1實例,並給我適當的IRepository注入?或者我有這種方法有任何主要的設計錯誤?

我不在MVC平臺上,所以我沒有這裏的請求範圍,如果它是MVC,我認爲它會完成任務。

回答