[英]Dependency Injection With Generic Repository
I am trying to do dependency injection (ASP.NET CORE) in my web api controller but I am having problems, since have a generic repository with unit of work, and also a generic service layer. 我试图在我的web api控制器中进行依赖注入(ASP.NET CORE),但是我遇到了问题,因为它有一个包含工作单元的通用存储库,还有一个通用的服务层。 The services are in a different class library.
这些服务位于不同的类库中。 The same occurs for the repositories.
存储库也是如此。
I am displaying my code: 我正在显示我的代码:
public class AccountController : Controller
{
private IAccountService _accountService;
public AccountController(IAccountService accountService)
{
_accountService = accountService;
}
}
service layer (base service): 服务层(基础服务):
public class BaseService<TEntity> : IDisposable, IBaseService<TEntity> where TEntity : class
{
private readonly IBaseRepository<TEntity> _repository;
private readonly IUnitOfWork _unitOfWork;
public BaseService(IBaseRepository<TEntity> repository, IUnitOfWork unitOfWork)
{
_repository = repository;
_unitOfWork = unitOfWork;
}
account service: 帐户服务:
public class AccountService : BaseService<User>, IAccountService
{
private readonly IAccountRepository _repository;
private readonly IUnitOfWork _unitOfWork;
public AccountService(IAccountRepository repository, IUnitOfWork unitOfWork) : base (repository, unitOfWork)
{
_repository = repository;
_unitOfWork = unitOfWork;
}
base repository: 基础库:
public class BaseRepository<TEntity> : IDisposable, IBaseRepository<TEntity> where TEntity : class
{
protected NeoSpaceDbContext _database;
public BaseRepository(NeoSpaceDbContext database)
{
_database = database;
}
account repository: 帐户存储库:
public class AccountRepository : BaseRepository<User>, IAccountRepository
{
public AccountRepository(NeoSpaceDbContext context) : base(context)
{}
}
I think my problem is my startup configuration in my web api. 我认为我的问题是我的网络API中的启动配置。
I have already tried: 我已经尝试过了:
services.AddScoped(typeof(IBaseService<User>), typeof(AccountService));
and: 和:
services.AddScoped(typeof(IBaseService<>), typeof(BaseService<>));
services.AddSingleton<IAccountService, AccountService>();
but nothing works ... Can someone tell me what is the right configuration for my case? 但没有任何作用...有人可以告诉我什么是我的案件的正确配置?
I guess you dont need to 我想你不需要
services.AddScoped(typeof(IBaseService<>), typeof(BaseService<>));
because IAccountService
should implement IBaseService<>
and AccountService should implement BaseService<>
. 因为
IAccountService
应该实现IBaseService<>
而AccountService应该实现BaseService<>
。 so you should not need to resolve IBaseService
所以你不需要解决
IBaseService
services.AddScoped<IAccountService, AccountService>();
should work 应该管用
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.