我对依赖注入相当陌生,我正在寻找一些关于最佳实践的建议。抱歉,之前是否有人问过这个问题,但我还没有找到好的解决方案。
假设我有一个 MVC4 Web 应用程序和一个单独的业务层。MVC 应用程序已经使用 Ninject NuGet 包设置,所以我有 NinjectWebCommon,它工作正常。
我的问题是:当我需要在其他层设置依赖项时,如何使用 Ninject?
假设我有这个存储库:
public class WidgetRepository : IWidgetRepository
{
// using an entity framework db context.
WidgetDbContext context = new WidgetDbContext();
public IQueryable<Widget> Widgets
{
get
{
return context.Widgets;
}
}
}
存储库返回的每个小部件都需要使用我需要注入的计算器对象执行计算:
public class Widget
{
// how can I get Ninject to inject a calculator object
// when Widgets are loaded form the database?
public ICalculator calculator;
public int MyValue { get; set; }
public int CalculateSomething
{
get
{
return calculator.Calculate(MyValue);
}
}
}
当在 MVC Web 应用程序中设置了 Ninject 但在业务层中创建了 Widget 对象时,将 ICalculator 注入每个 Widget 实例的最佳实践是什么?