c# - 从 Net Core 3.1 迁移到 Net 6 期间,以下方法或属性之间的调用不明确

标签 c# .net-6.0 .net-core-3.1

我正在尝试从 .Net Core 3.1 迁移到 .Net 6。我更新了 TargetFramework 和一些依赖项。

我有这段代码

public CustomerSettingsDefaults(Microsoft.Extensions.Configuration.IConfigurationSection configuration)
{
  ....
  var personalizedUrls = configuration.GetRequiredSection(@"PersonalizedUrls");

但是在项目构建过程中

Severity Code Description Project File Line Suppression State Error CS0121 The call is ambiguous between the following methods or properties: 'Microsoft.Extensions.Configuration.ConfigurationExtensions.GetRequiredSection(Microsoft.Extensions.Configuration.IConfiguration, string)' and 'Common.Extensions.ConfigurationExtensions.GetRequiredSection(Microsoft.Extensions.Configuration.IConfiguration, string)' Crm.Infrastructure C:...\Configuration\CustomerSettingsDefaults.cs 23 Active

我的ConfigurationExtensions是这样定义的

namespace Common.Extensions
{
    public static class ConfigurationExtensions
    {
        public static IConfigurationSection GetRequiredSection(this IConfiguration configuration, string sectionName)
        {
            var section = configuration.GetSection(sectionName);
            if (section is null)
            {
                throw new InvalidOperationException($@"The configuration is missing the {sectionName} section");
            }

            return section;
        }
    }
}

如何解决?

最佳答案

嗯,您自己的 GetRequiredSection 扩展方法与添加到 Microsoft.Extensions.Configuration.Abstractions 中的 GetRequiredSection 之间存在冲突.NET 6。两者都扩展相同的接口(interface)并采用相同的参数,因此如果两个命名空间(您的 Common.Extensions 和 .NET 的 Microsoft.Extensions.Configuration)都在范围内,当然编译器不知道该选择哪一个。

因此,您可以完全删除自己的扩展方法,因为它似乎与 .NET 提供的扩展方法执行相同的操作,这意味着您少了一件需要维护的事情。

如果你绝对需要继续使用自己的方法,那么你需要像静态方法一样显式调用它:

  var personalizedUrls = Common.Extensions.ConfigurationExtensions.GetRequiredSection(configuration, "PersonalizedUrls");

关于c# - 从 Net Core 3.1 迁移到 Net 6 期间,以下方法或属性之间的调用不明确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73285074/

相关文章:

c# - 如何结合 "IF"条件使用技巧?(C# ASP.NET)

c# - IServiceCollection 不包含 AddAzureClients 的定义

c# - Azure 上的 .Net Core Web API 不提供 API 端点,仅提供默认起始页

c# - ElementAtOrDefault 的替代方案

asp.net-core - 在 EF Core 3.0 与 2.2 中执行存储过程

c# - 在 DCOM 配置中找不到 Microsoft Word 文档

c# - .NET DICOM库

c# - 如果我在每个循环之间按 ENTER 键,为什么随机生成和数组会一起工作?

c# - .NET 6 发布 Android 应用程序

c# - 在同一 Razor 页面上处理多个表单