2013-04-10 84 views
2

我正在嘗試按照此tutorial實現通用存儲庫和工作模式單元。除了模式之外,我還使用Ninject爲我的web應用程序執行依賴注入。實現通用存儲庫和工作模式單元

我所使用的特定的綁定在這裏:

private static void RegisterServices(IKernel kernel) 
{ 
    kernel.Bind(typeof(IGenericRepository<>)) 
      .To(typeof(GenericRepository<>)).InSingletonScope(); 
    kernel.Bind<IUnitOfWork>() 
      .To<UnitOfWork>(); 
} 

然而,根據本教程中,我需要將DbContext傳遞給每個倉庫財產在我UnitOfWork類,以便所有存儲庫將共享像只有一個DbContext實例在這裏:

public GenericRepository<Course> CourseRepository 
{ 
    get 
    { 
     if (this.courseRepository == null) 
     { 
      this.courseRepository = new GenericRepository<Course>(context); 
     } 
     return courseRepository; 
    } 
} 

的問題是我怎麼能傳遞DbContext實例(居住在UnitOfWork類)到每當Ninject注入一個GenericRepository的實例時,構造函數是否爲?我知道WithConstructorArgument方法,但我不能在我的kernel.Bind調用中使用它,因爲那時我將無法訪問DbContext實例。

回答

0

恕我直言,你的問題不是一個依賴注入解決的問題,但在創建GenericRepository對象時一個實例依賴(需要依賴是解決IGenericRepository的UnityOfWork類的DbContext的具體實例)

因此,我建議你使用一個工廠來創建你的IGenericRepository實例。

你可以找到一些進一步的細節here

+0

這意味着我必須'IGenericRepository'綁定到'RepositoryFactory'並讓工廠決定創建哪個具體的倉庫? – rexcfnghk 2013-04-10 01:50:17

相關問題