ASP.NET 核心:访问和重用配置对象



在我的Startup.cs中,我有以下样板代码:

public Startup(IHostingEnvironment env)
{
    var builder = new ConfigurationBuilder()
        .SetBasePath(env.ContentRootPath)
        .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
        .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
        .AddEnvironmentVariables();
    Configuration = builder.Build();
}

我想做的是访问已经构建的Configuration对象并重新使用项目中其他位置的控制器,而无需在那里构建新的配置对象。我该怎么做,甚至有可能吗?

您有几种选择:

  1. 将配置对象存储在全局变量中。
    • 优点:简单。
    • 缺点:创建耦合并使每个人都知道Configuration对象。没有DI。无类型安全。
  2. 将配置对象添加到 DI 容器,并在需要时使用它。
    • 优点:解耦。支持 DI。
    • 缺点:您让其他组件知道配置。无类型安全。
  3. 通过使用IOptions或使用ConfigurationBinder创建选项对象,并将其添加到容器中。
    • 优点:不错的架构,每个组件只知道选项对象。支持 DI。键入安全。
    • 缺点:更多代码。

对于 Hello World 大小的应用程序,选项 #1 工作正常。对于现实世界的应用程序,我肯定会考虑#3。

最新更新