Asp.net core .Net核心WebApi依赖项注入
我有一个解决方案,我有不同的项目。 其中一个是api项目,我想在此项目中使用依赖项注入,但我得到以下错误: 有些服务无法构建(验证服务描述符“ServiceType:CCM.Business.Abstract.ICompanyService Lifetime:作用域实现类型:CCM.Business.Concrete.CompanyManager”时出错:在尝试激活“CCM.Business.Concrete.CompanyManager”时无法解析类型“CCM.DataAccess.Concrete.CompanyDal”的服务。) Startup.cs:Asp.net core .Net核心WebApi依赖项注入,asp.net-core,dependency-injection,asp.net-core-webapi,Asp.net Core,Dependency Injection,Asp.net Core Webapi,我有一个解决方案,我有不同的项目。 其中一个是api项目,我想在此项目中使用依赖项注入,但我得到以下错误: 有些服务无法构建(验证服务描述符“ServiceType:CCM.Business.Abstract.ICompanyService Lifetime:作用域实现类型:CCM.Business.Concrete.CompanyManager”时出错:在尝试激活“CCM.Business.Concrete.CompanyManager”时无法解析类型“CCM.DataAccess.Concr
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
services.AddScoped<ICompanyDal, CompanyDal>();
services.AddScoped<ICompanyService, CompanyManager>();
}
public void配置服务(IServiceCollection服务)
{
services.AddControllers();
services.addScope();
services.addScope();
}
我公司:
public interface ICompanyDal: IGenericDal<Company>
{
}
public class CompanyDal:GenericDal<Company,CCMContext>,ICompanyDal
{
}
公共接口ICompanyDal:IGenericDal
{
}
公司名称:
public interface ICompanyDal: IGenericDal<Company>
{
}
public class CompanyDal:GenericDal<Company,CCMContext>,ICompanyDal
{
}
public class CompanyDal:GenericDal、ICompanyDal
{
}
i公司服务:
public interface ICompanyService
{
Company GetById(int id);
List<Company> GetAll();
void Create(Company entity);
void Update(Company entity);
void Delete(Company entity);
}
公共接口ICompanyService
{
公司GetById(intid);
List GetAll();
无效创建(公司实体);
无效更新(公司实体);
作废删除(公司实体);
}
公司经理:
public class CompanyManager : ICompanyService
{
private CompanyDal _companyDal;
public CompanyManager(CompanyDal companyDal)
{
_companyDal = companyDal;
}
public void Create(Company entity)
{
_companyDal.Create(entity);
}
public void Delete(Company entity)
{
_companyDal.Delete(entity);
}
public List<Company> GetAll()
{
return _companyDal.GetAll();
}
public Company GetById(int id)
{
return _companyDal.GetById(id);
}
public void Update(Company entity)
{
_companyDal.Update(entity);
}
}
公共类公司管理者:ICompanyService
{
私人公司;
上市公司管理人(CompanyDal CompanyDal)
{
_companyDal=companyDal;
}
公共作废创建(公司实体)
{
_公司创建(实体);
}
公共作废删除(公司实体)
{
_公司数据删除(实体);
}
公共列表GetAll()
{
return _companyDal.GetAll();
}
上市公司GetById(内部id)
{
返回_companyDal.GetById(id);
}
公共作废更新(公司实体)
{
_公司数据更新(实体);
}
}
还有什么我需要传递给您的吗?请帮助。将
公司管理器更改为显式依赖于注册的抽象
公司经理:
public class CompanyManager : ICompanyService
{
private CompanyDal _companyDal;
public CompanyManager(CompanyDal companyDal)
{
_companyDal = companyDal;
}
public void Create(Company entity)
{
_companyDal.Create(entity);
}
public void Delete(Company entity)
{
_companyDal.Delete(entity);
}
public List<Company> GetAll()
{
return _companyDal.GetAll();
}
public Company GetById(int id)
{
return _companyDal.GetById(id);
}
public void Update(Company entity)
{
_companyDal.Update(entity);
}
}
因为这是在容器中注册的
启动:
在启动时,您使用实现CompanyDal
添加服务ICompanyDal
。但在CompanyManager
中,您注入的是实现CompanyDal
,而不是服务ICompanyDal
解决方案,将服务注入构造函数:
公共类公司管理者:ICompanyService
{
私人公司;
上市公司管理人(I公司级公司)
{
_companyDal=companyDal;
}
...