首页 > 解决方案 > 如何将配置部分传递给库项目中的 services.Configure()?

问题描述

创建新的 .NET Core 应用程序时,我可以配置 appsettings.json 文件中的值,如下所示。在文件的ConfigureServices方法中Startup我这样做

public void ConfigureServices(IServiceCollection services)
{
    ServiceProvider serviceProvider = services.BuildServiceProvider();
    IConfiguration configuration = serviceProvider.GetService<IConfiguration>();
    IConfigurationSection mySection = configuration.GetSection("MySection");
    services.Configure<MyOptions>(mySection);
}

一切正常,这是一个有效的语法。接下来我创建一个库并引用它。我创建了一个静态文件来为该库设置 DI 容器

public static class ServiceConfiguration
{
    public static void Configure(IServiceCollection services)
    {
        // use the same code as shown above
    }
}

我打电话给这个MyLib.ServiceConfiguration.Configure(services);

静态文件的最后一行是无效的语法。由于此编译错误,无法将 aIConfigurationSection作为参数传递给该方法services.Configure()

无法从“Microsoft.Extensions.Configuration.IConfigurationSection”转换为“System.Action<MyLib.MyOptions>”

为什么可以在将代码放在 Web API 项目中而不是在库项目中时传递一个部分?我错过了一个包裹吗?

我为此创建了一个非常小的复制存储库

https://gitlab.com/olafsvenson/options-reproduction

README.md 链接到相关部分

标签: c#.net-core

解决方案


推荐阅读