Я написал простой интерфейс доступа к данным с общими операциями CRUD, так что каждое хранилище базы данных должно реализовывать этот интерфейс. Сейчас я реализовал этот интерфейс для одной базы данных, скажем, SQL. Эта реализация базы данных SQL принимает параметры базы данных (строку подключения и другие детали) в качестве параметра в своем конструкторе.
См. Ниже код:
namespace MyDataAccessInterfaces
{
public interface IDataAccess
{
read();
create();
update();
delete();
}
}
namespace MyDataAccessImplementations
{
public class SQLAccess
{
SQLAccess(Settings settings){
//do something to get DB context
}
//some properties here
read(){//some code
}
create(){//some code
}
update(){//some code
}
delete(){//some code
}
}
}
Теперь я хочу, чтобы зависимости вводили это в сервисный контроллер. Я смотрю на внедрение зависимости конструктора здесь. Если я передам реализацию SQL как зависимость в конструкторе контроллера, как показано ниже, и добавлю это в метод запуска класса-> ConfigureServie, как передать его настройки?
public class HomeController : APIController
{
private readonly IDataAccess _dataAccess;
public HomeController(IDataAccess dataAccess)
{
_dataAccess= dataAccess;
}
public IActionResult Index()
{
//do something and set result
return Ok(result);
}
}
Ниже приведен мой метод ConfigureService в классе startup.cs
public void ConfigureServices(IServiceCollection services)
{
// Add application services.
services.AddSingleton<IDataAccess, SQLAccess>();
}
Вопрос в том, как передать параметры конструктора и значения свойств в метод API Configure Service?