我是依赖注射剂的新手,但发现了简单的注射器,它看似简单易用而且功能强大。
在我的项目中,我有以下图层
Dal - 由调用dbcontext的存储库组成。每个repo都有自己的接口,用于实现IRepository
例如 CompanyRepository实现ICompanyRepository
ICompanyRepository实现IRepository
class CompanyRepository : ICompanyRepository
{
public CompanyRepository(IDbContext context)
{
_context = context;
}
}
模特 - 我所有的poco对象
服务 - 调用Dal加载模型对象的业务逻辑。每个服务都有自己的接口,可以实现IService。例如
CompanyService实现ICompanyService。
ICompanyService实现了IService。
class CompanyService : ICompanyService
{
public CompanyService(ICompanyRepository repo)
{
_repo = repo;
}
}
WebApi - mvc web api项目。应该调用服务层来加载和保存模型。没有提到Dal。
在WebApi中,我添加了SimpleInjector。而我的CompanyCo troller有一个像这样的构造函数
class CompanyController : ApiController
{
public CompanyController(ICompanyService service)
{
_service = service;
}
}
现在在我的application_start代码中,我注册ICompanyService以注入CompanyService。现在我得到一个错误,说CompanyService希望ICompanyRepository注入。但是我的webApi项目没有引用dal层。
我怎样才能让它发挥作用?我不应该从webapi中引用dal。我猜我会在repos中遇到同样的问题,因为他们在构造函数中有IDbContext。
提前致谢