IConfiguration不包含GetValue的定义

197

将一个类移动到其他项目后,其中一个 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;
        }
    }
}

我该怎么修复它?

2个回答

413

只需安装Microsoft.Extensions.Configuration.Binder即可使用此方法。

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


44

最合适的答案在这里是最高的。 然而,另一个选项是通过传入键以字符串形式获取值。

public string BaseUri => _configuration["ApiSettings:ApiName:Uri"] + "/";

2
这并没有回答问题,因为它明确要求如何修复该方法。虽然这是一个不错的替代方案,谢谢。 - Machado
3
嗨,乔丹。只是想感谢你发布这个内容。虽然你的回答可能并没有直接回答问题,但它提供了一个不错的替代方案。我从谷歌搜索过来,现在考虑使用你的设置检索方式。因此,我认为你的回答是该主题的有价值的补充。谢谢,伙计 :) - Martijn
5
这个版本的优点是少一个依赖项,所以对于像控制台应用程序这样简单的东西,它是我的默认选择。 - Jonathan Allen
2
是的,我认为这种方法比我的初始方法更好。只需注意.NET版本和兼容性即可。 - Machado

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接