首页 > 解决方案 > 在 .net core 中读取或访问自定义配置扩展

问题描述

我已经根据以下文章构建了一个自定义配置(提供程序和服务)。 https://medium.com/@dneimke/custom-configuration-in-net-core-2-193ff6f02046

现在,当想要从IConfiguration使用 DI 时访问自定义添加的提供程序时。

Configuration在启动时看起来像

在此处输入图像描述

它显示它有 6 个提供程序,标记的第 5 个索引是我的自定义配置。

IConfiguration在我的控制器中注入时,我如何访问我添加的自定义配置(第 5 个索引) ?

在此处输入图像描述

需要从自定义配置中获取connection和connectionsettings的值

TIA

标签: c#asp.net-coredependency-injectionconfiguration

解决方案


IConfigurationRoot.Providers例如,您可以从中获取所有配置提供程序

public class HomeController : Controller
{
    private readonly IConfiguration _configuration = null;
    private readonly ApplicationDbContext _dbContext;

    public HomeController(IConfiguration configuration, ApplicationDbContext dbContext)
    {
        _configuration = configuration;
        _dbContext = dbContext;
    }

    public IActionResult Index()
    {
        var configurationRoot = _configuration as IConfigurationRoot;

        var provider = (DbProvider)configurationRoot.Providers.Last();

       // Or get specific provider using index as below comment has shown
       // var list = configurationRoot.Providers.ToList();
       // var provider = (DbProvider)list[5];

        var connectionSettings = provider.connectionSettings;

        return View();
    }
}

推荐阅读