2010-04-15 21 views
1

我們使用依賴注入在最近纔開始,我們已經選擇了Ninject 2(現在)作爲我們的IOC容器。當我重構我們的解決方案來融入DI原則時,我遇到了一些讓我感到有些迷惑的東西,我想知道是否有一種簡單的方法來解決它。是否可以指示Ninject將基於上下文的邏輯應用於所有綁定?

對於我們的數據層,我們有一大堆的繼承相同的通用類(EntityMapper)數據訪問類。雖然在過去我們總是在需要時創建這些類的新實例,但他們真的可以全部更改爲單例。我們已經重寫了ObjectDataSource來使用Ninject來實例化其數據訪問對象,因此無論何時我們創建一個指向我們的EntityMapper類之一的ObjectDataSource,Ninject都將使用其默認自綁定策略來注入必要的依賴關係。由於這些類有很多,所以我們不必爲每個EntityMapper類創建顯式綁定,我們也不必爲每個類都設置特殊屬性。但是,我希望能夠指示Ninject將EntityMapper的任何實例變爲單例類。就像這樣:

Bind(t => typeof(IEntityMapper).IsAssignableFrom(t)).InSingletonScope(); 

有沒有辦法做到這一點?

回答

1

可以使用conventions extension做以下

var kernel = new StandardKernel(); 
kernel.Scan(x=> 
      { 
       x.FromAssemblyContaining<MyEntityMapper>(); 
       x.FromCallingAssembly(); 
       x.WhereTypeInheritsFrom<IEntityMapper>(); 
       x.InSingletonScope(); 
      }); 
相關問題