在引用的 class 库中注入?

Injection in a referenced class library?

我有一个 ASP.NET Core 2.1 网站引用了一个 class 库 (DAL)。要从 appsettings.json(ASP.NET 项目) 访问连接字符串,我需要以某种方式注入配置。我在 class 库中创建了一个 class,如下所示:

    public class Helper
{
    IConfiguration Configuration;
    public Helper(IConfiguration configuration)
    {
        Configuration = configuration;
    }
    public string GetConnectionString(string name)
    {
        return Configuration.GetConnectionString("DefaultConnection");
    }
}

然而,注入模式没有选择它,因此它需要一个 IConfigration 来创建 class。

如何从 class 图书馆访问 appsettings.json?

您的 class 库不应该知道或关心您如何处理应用程序中的配置。您 Helper class 需要的只是一个连接字符串,因此您应该将其注入其中。 如何提供该字符串是一个实施细节,它是您的应用程序域的一部分。

public class Helper
{
     public Helper(string connectionString)
     {
          // do something with connectionString
     }
}

然后,在您的应用中:

services.AddScoped(p =>
    new Helper(Configuration.GetConnectionString("DefaultConnection")));