.Net Core Web 应用程序的自定义服务扩展未映射相同

Custom service extension for .Net Core web app not mapping the same

我正在尝试编写下面的 ServiceCollection 扩展。奇怪的是,当试图将 section 传递给 services.Configure() 方法时,它说它不能从 IConfigurationSection 转换为 Action<EsiConfig>

public static IServiceCollection AddEsi(this IServiceCollection services, IConfigurationSection section)
{
    services.Configure<EsiConfig>(section);
    services.AddScoped<IEsiClient, EsiClient>();

    return services;
}

奇怪的是 Startup.cs 中的这段代码是相同的:

services.Configure<EsiConfig>(Configuration.GetSection("ESIConfig"));
services.AddScoped<IEsiClient, EsiClient>();

// Implementation of the ServiceCollection extension
services.AddEsi(Configuration.GetSection("ESIConfig"));

第一行工作得很好,当你将鼠标悬停在 GetSection 上时,它 returns 一个 ICollectionSection 被传递到接受相同的完全相同的方法 (Config()) 属性 Action<EsiConfig>.

类型

完全不确定我错过了什么,真的很困惑。

检查 services.Configure<EsiConfig>(Configuration.GetSection("ESIConfig"));services.Configure<EsiConfig>(section); 的参考,并确保您使用了 Microsoft.Extensions.Options.ConfigurationExtensions

这是一个工作项目ConfigurationPro