c# - .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 被传递给Config()
接受相同的确切属性类型的相同的确切方法 () Action<EsiConfig>
。
不知道我完全错过了什么,我真的很困惑。
解决方案
检查参考services.Configure<EsiConfig>(Configuration.GetSection("ESIConfig"));
并services.Configure<EsiConfig>(section);
确保您使用了Microsoft.Extensions.Options.ConfigurationExtensions
.
这是一个工作项目ConfigurationPro
推荐阅读
- django - 字段 'id' 需要一个数字,但得到了(带有 Id 的东西)
- angular - 如何在Angular中的重试调用中设置间隔
- mybatis - MyBatis 以毫秒为单位映射时间戳
- python - 使用 bin 分离数据并使用 python 查找最大值、平均值和标准差
- http - Julia WebSocket 读/写速度慢
- javascript - JavaScript 中的函数参数类型
- python - 如何在测试期间处理非托管模型
- php - 当我单击添加时,数据被保存并通过 ajax 显示在同一页面上,但如果我想对数据进行排序,按钮不起作用
- python - pandas:根据组内条件更改值
- python - 加入/合并相同的数据框以在熊猫中进行转换