Pat*_*ick 2 c# dependency-injection asp.net-mvc-3
我正试图通过DI和IoC获得越来越多的熟悉.此时我理解了在MVC应用程序中使用控制器的DI的概念和实现.但假设我有一个分层应用程序.控制器调用businesslogic类,businesslogic子句调用存储库类.
如何使用DI设置第二层,即businesslogic到存储库部分.这确保了我可以在我的应用程序中的不同级别进行测试 我不想做的是从控制器将依赖性传递给存储库.
希望有人能给出一些暗示.
帕特里克
简单示例如何使用Ninject实现.这不是DI/IoC的,只是一个简单的例子是如何绝对真理可以完成.
组态
// repositories
base.Bind<IMyRepository>().To<MyRepository>();
// services
base.Bind<IMyServices>().To<MyServices>();
Run Code Online (Sandbox Code Playgroud)
当IMyRepository使用时,它将使用具体实现MyRepository.
调节器
public class MyController : Controller
{
private readonly IMyServices _myServices;
public AnimalController(IMyServices myServices)
{
_myServices = myServices;
}
// your actions
}
Run Code Online (Sandbox Code Playgroud)
再次,里面MyService有一个类似的模式(构造函数注入)
服务
public class MyServices : IMyServices
{
private readonly IMyRepository _myRepository;
public MyServices(IMyRepository myRepository)
{
_myRepository = myRepository;
}
public void Example()
{
_myRepository.PleaseDoSomething();
}
}
Run Code Online (Sandbox Code Playgroud)
还要记住ASP.NET MVC中还有很多其他东西可以使用IoC:
更新
在示例代码中有一个错误.服务中没有进行依赖注入.现在它应该是正确的.
更新2
我认为强烈建议使用NuGet包来引导你的应用程序.节省时间,可能会应用一些"最佳实践",其他项目将获得类似的基础等.以下是不同IoC + MVC 3的一些说明
| 归档时间: |
|
| 查看次数: |
257 次 |
| 最近记录: |