IConfiguration不包含GetValue的定义

Mac*_*ado 9 c# asp.net configuration asp.net-core-2.2

通过项目中的一种IConfiguration方法移动课程后,GetValue<T>停止工作。用法是这样的:

using Newtonsoft.Json;
using System;
using System.Net;
using System.Text;
using Microsoft.Extensions.Configuration;

namespace Company.Project.Services
{
    public class MyService
    {
        private readonly IConfiguration _configuration;

        public string BaseUri => _configuration.GetValue<string>("ApiSettings:ApiName:Uri") + "/";

        public MyService(
            IConfiguration configuration
        )
        {
            _configuration = configuration;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Mac*_*ado 23

只需安装Microsoft.Extensions.Configuration.Binder,该方法将可用。

原因是这GetValue<T>是一种扩展方法,并不直接存在于IConfiguration接口中。


Jor*_*dan 5

最佳答案在这里最合适。然而,另一种选择是通过传入键来获取作为字符串的值。

public string BaseUri => _configuration["ApiSettings:ApiName:Uri"] + "/";
Run Code Online (Sandbox Code Playgroud)

  • 这个版本的优点是它需要更少的依赖。因此,对于控制台应用程序等简单的事情,它是我的默认选择。 (5认同)
  • 嘿乔丹。只是想感谢您发布此内容。尽管您的回复可能无法直接回答问题,但它确实提供了一个不错的选择。我从谷歌来到这里,我现在正在考虑你检索设置的方式。因此,我认为您的回答对本主题是有价值的补充。谢了哥们 :) (3认同)
  • 这并不能回答问题,因为它特别询问如何修复该方法。尽管这是初始方法的一个很好的替代方案,谢谢。 (2认同)
  • 是的,我实际上认为这种方法比我最初的方法更好。只需注意 .NET 版本和兼容性即可。 (2认同)