我正在尝试编写下面的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
。
这是一个工作项目 配置专业版