使用依赖注入时,哪个模块保存接口?
例如,如果我有一个webapi服务项目和一个数据访问层项目,这意味着我将IUnitOfWork,IRepository等的定义放在webapi项目中,并放置实现这些接口的UnitOfWork,Repository等类在数据访问项目中?
其次,如果我正在使用包含所有绑定的NinjectConfigurator类,并将其放在我的webapi项目中,以便在启动时初始化,这并不意味着我的webapi项目现在依赖于数据访问层,因为绑定函数必须知道数据访问层中定义的类型吗?
例如
private void AddBindings(IKernel container) {
container.Bind<myDbContext>().ToSelf().InRequestScope();
container.Bind<IUnitOfWork<myDbContext>>().To<UnitOfWork<myDbContext>>();
container.Bind<IUserRepository>().To<UserRepository>();
}
答案 0 :(得分:0)
最佳做法是:
你的绑定将在IoC层中,在你的web项目中你只需要调用模块。
private static void RegisterServices(IKernel kernel)
{
kernel.Load(new DomainModules(), new DataModules(), new CrossCuttingModule(), new ServiceModules());
}