如何依赖注入在其构造函数中采用数据库设置的数据访问层?

How to Dependency inject Data Access Layer which takes database settings in it's constructor?

我编写了一个带有通用 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 实现作为依赖项传递并在启动 class->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);
    }
}

下面是我在 startup.cs class

中的 ConfigureService 方法
public void ConfigureServices(IServiceCollection services)
{
    // Add application services.
       services.AddSingleton<IDataAccess, SQLAccess>();
}

问题是,如何在 API 的配置服务方法中传递构造函数参数和 属性 值?

public void ConfigureServices(IServiceCollection services)
{
    // Add application services.
       services.AddSingleton<IDataAccess, SQLAccess>(opt=> { new SQLAccess(new 
       Settings(){ 
           //Set Settings object properties here

       }); 
   });
}