从 .NET Core 3.1 迁移到 .NET 5 会产生编译时错误
Migrating from .NET Core 3.1 to .NET 5 produce compile-time error
我有 .netcore 3.1
应用程序,我想将其更新为 .net 5.0
我有以下代码
public static IAppSettings ConfigureAppSettings(this IServiceCollection services, IConfiguration configuration)
{
void ConfigureSection<Interface, Implementation>(string sectionName)
where Implementation : Interface, new() where Interface : class
{
Implementation configSection = new Implementation();
configuration.GetSection(sectionName).Bind(configSection);
services.AddSingleton<Interface>(configSection);
}
}
它以前工作正常,但在更新到 .net5 后我开始看到这个编译时错误
CS1061 'IConfigurationSection' does not contain a definition for 'Bind' and no accessible extension method 'Bind' accepting a first argument of type 'IConfigurationSection' could be found (are you missing a using directive or an assembly reference?)
- 显然,
Bind
方法已被删除,API 不再兼容
- offical documentation for the migration
中没有提到这个问题的解决方法
我的问题:Bind
方法的替代方法是什么?
我安装了这个 Microsoft.Extensions.Configuration.Binder 包,问题解决了。
奇怪的是,当我使用 .net-core3.1
时,我不需要从 Nuget
安装它,但是在更新到 .net5
之后,我需要单独安装这个包。
我有 .netcore 3.1
应用程序,我想将其更新为 .net 5.0
我有以下代码
public static IAppSettings ConfigureAppSettings(this IServiceCollection services, IConfiguration configuration)
{
void ConfigureSection<Interface, Implementation>(string sectionName)
where Implementation : Interface, new() where Interface : class
{
Implementation configSection = new Implementation();
configuration.GetSection(sectionName).Bind(configSection);
services.AddSingleton<Interface>(configSection);
}
}
它以前工作正常,但在更新到 .net5 后我开始看到这个编译时错误
CS1061 'IConfigurationSection' does not contain a definition for 'Bind' and no accessible extension method 'Bind' accepting a first argument of type 'IConfigurationSection' could be found (are you missing a using directive or an assembly reference?)
- 显然,
Bind
方法已被删除,API 不再兼容 - offical documentation for the migration 中没有提到这个问题的解决方法
我的问题:Bind
方法的替代方法是什么?
我安装了这个 Microsoft.Extensions.Configuration.Binder 包,问题解决了。
奇怪的是,当我使用 .net-core3.1
时,我不需要从 Nuget
安装它,但是在更新到 .net5
之后,我需要单独安装这个包。