[英]Dependency Injection With Generic Repository
我試圖在我的web api控制器中進行依賴注入(ASP.NET CORE),但是我遇到了問題,因為它有一個包含工作單元的通用存儲庫,還有一個通用的服務層。 這些服務位於不同的類庫中。 存儲庫也是如此。
我正在顯示我的代碼:
public class AccountController : Controller
{
private IAccountService _accountService;
public AccountController(IAccountService accountService)
{
_accountService = accountService;
}
}
服務層(基礎服務):
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;
}
帳戶服務:
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;
}
基礎庫:
public class BaseRepository<TEntity> : IDisposable, IBaseRepository<TEntity> where TEntity : class
{
protected NeoSpaceDbContext _database;
public BaseRepository(NeoSpaceDbContext database)
{
_database = database;
}
帳戶存儲庫:
public class AccountRepository : BaseRepository<User>, IAccountRepository
{
public AccountRepository(NeoSpaceDbContext context) : base(context)
{}
}
我認為我的問題是我的網絡API中的啟動配置。
我已經嘗試過了:
services.AddScoped(typeof(IBaseService<User>), typeof(AccountService));
和:
services.AddScoped(typeof(IBaseService<>), typeof(BaseService<>));
services.AddSingleton<IAccountService, AccountService>();
但沒有任何作用...有人可以告訴我什么是我的案件的正確配置?
我想你不需要
services.AddScoped(typeof(IBaseService<>), typeof(BaseService<>));
因為IAccountService
應該實現IBaseService<>
而AccountService應該實現BaseService<>
。 所以你不需要解決IBaseService
services.AddScoped<IAccountService, AccountService>();
應該管用
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.