在类库中传递和维护配置

Wes*_*ley 3 c# asp.net-core asp.net-core-webapi

我正在与我的 Web API 分开的类库中构建一个存储库,以保持关注点分离。

我想将数据库配置存储在 my 中appsettings.json,以便可以覆盖 Azure Web Apps 中的这些设置。这为我提供了对本地、预生产和生产环境进行单独设置的途径。

我假设向存储库提供配置设置的最佳方法是从 中读取它们Startup.cs,然后将它们传递到类库。

存储这些设置以确保它们在应用程序的整个生命周期中持续存在并确保它们不会被垃圾收集的最佳方式是什么?

use*_*993 5

您需要创建一个配置类:

 public class MyLibraryConfiguration {

     public string PropertyOne {get;set;}
 }
Run Code Online (Sandbox Code Playgroud)

并在您的类中将其用作构造时依赖项:

 public class MyService {

      private readonly IOptions<MyLibraryConfiguration> config;
      public MyService(IOptions<MyLibraryConfiguration> config) {
          this.config = config;
      }
 }
Run Code Online (Sandbox Code Playgroud)

您必须在 Web 项目的 Startup.cs 中注册您的依赖项和配置:

  services.Configure<MyLibraryConfiguration>(options => this.Configuration.GetSection("SectionName").Bind(options));
  services.AddScoped<MyService>();   
Run Code Online (Sandbox Code Playgroud)

那么你可以使用 MyService 在构建时注入它