如何从另一个项目访问应用程序设置 [英] How to access appsettings from another project

查看:73
本文介绍了如何从另一个项目访问应用程序设置的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

In the startup file I need a way to access IConfiguration in another project. I have been told the Business Logic should not know about IConfiguration. If thats the case then how do I inject data from appsettings down to the business logic projects.

appsettings.json

{
  "AdminEmail": "myemail@gmail.com"
}

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

How would I access AdminEmail in a class library I created in the same solution?

推荐答案

  • 定义设置模型

    • Define a model for settings

      public sealed class EmailSettings
      {
          public string AdminEmail { get; set; }
      }
      

    • 配置设置

    • Configure settings

      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);
          }
      }
      

    • 注入并使用

    • Inject and use it

      public class ClassLibraryInTheSameSolution
      {
          public ClassLibraryInTheSameSolution(EmailSettings emailSettings)
          {                         
          }
      }
      

    • 这篇关于如何从另一个项目访问应用程序设置的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆