我有以下 Config.json 文件
{
"UserId": 2930,
"Phones":["<HomePhoneNumber>", "<MobileNumber>"]
}
我在Config.cs中有对应的Config类
public class Config
{
public int UserId { get; set; }
public List<string> Phones { get; set;}
}
我正在学习本教程 - https://keestalkstech.com/2018/04/dependency-injection-with-ioptions-in-console-apps-in-net-core-2/
但是我的 config.json 文件中没有像他的 appsettings.json 这样的部分。我想阅读整个配置文件。我如何使用 ConfigurationBuilder 做到这一点?
class Program
{
static async Task Main(string[] args)
{
var services = new ServiceCollection();
ConfigureServices(services);
var serviceProvider = services.BuildServiceProvider();
var config = serviceProvider.GetService<Config>();
}
private static void ConfigureServices(IServiceCollection services)
{
services.AddLogging(builder => builder.AddDebug().AddConsole());
var configuration = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("Config.json", false)
.Build();
services.AddOptions();
services.Configure<Config>(configuration);
}
}
最佳答案
由于选项配置,您需要通过 IOptions
访问它
//...
var serviceProvider = services.BuildServiceProvider();
var option = serviceProvider.GetService<IOptions<Config>>();
var config = option.Value;
另一种方法是通过绑定(bind)到所需的对象图,然后将其添加到服务集合中,直接从配置中提取类
//...
var configuration = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("Config.json", false)
.Build();
var config = configuration.Get<Config>();
services.AddSingleton(config);
//...
通过上述方法
//...
var config = serviceProvider.GetService<Config>();
将按预期工作。
关于c# - .Net Core - IConfigurationRoot 读取整个 json 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54915299/