如何从另一个项目访问应用程序设置

Luk*_*101 5 c# asp.net-core

在启动文件中,我需要一种方法来访问另一个项目中的IConfiguration。我被告知业务逻辑不应该了解IConfiguration。如果是这样的话,那么我该如何将数据从设置中注入到业务逻辑项目中。

appsettings.json

{
  "AdminEmail": "myemail@gmail.com"
}
Run Code Online (Sandbox Code Playgroud)

如何在同一解决方案中创建的类库中访问AdminEmail?

And*_*toy 6

  • 定义设置模型

    public sealed class EmailSettings
    {
        public string AdminEmail { get; set; }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  • 配置设置

    public sealed class Startup
    {
        private readonly IConfiguration configuration;
    
        public Startup(IConfiguration configuration) => this.configuration = configuration;
    
        public void ConfigureServices(IServiceCollection services)
        {
            services
                .Configure<EmailSettings>(configuration)
                .AddSingleton(sp => sp.GetRequiredService<IOptions<EmailSettings>>().Value);
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  • 注入并使用它

    public class ClassLibraryInTheSameSolution
    {
        public ClassLibraryInTheSameSolution(EmailSettings emailSettings)
        {                         
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)