首页 > 解决方案 > .Net Core Web 应用程序的自定义服务扩展不映射相同

问题描述

我正在尝试在下面编写 ServiceCollection 扩展。奇怪的是,当试图传递section给该services.Configure()方法时,它说它不能从转换IConfigurationSectionAction<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 被传递给Config()接受相同的确切属性类型的相同的确切方法 () Action<EsiConfig>

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

标签: c#dependency-injectionasp.net-core-2.0

解决方案


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

这是一个工作项目ConfigurationPro


推荐阅读