.Net Core Web 应用的自定义服务扩展映射不同



我正在尝试编写下面的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上时,它会返回一个ICollectionSection,该ICollectionSection被传递到接受相同属性类型的Action<EsiConfig>相同的确切方法(Config())。

不知道我错过了什么,真的很困惑。

检查引用中是否有services.Configure<EsiConfig>(Configuration.GetSection("ESIConfig"));services.Configure<EsiConfig>(section);,并确保使用了Microsoft.Extensions.Options.ConfigurationExtensions

这是一个工作项目 配置专业版

最新更新