【发布时间】:2019-02-08 21:47:56
【问题描述】:
ASP.NET Core 是否实现IConfiguration 访问配置值?
我的问题很可能是因为我不明白 ASP.NET Core 到底是什么。好吧,我知道它是一个 Web 框架,不确定,但看起来它是 .NET 中的命名空间,或者是一个包......我知道在 php 中,一个框架可以是一组类(命名空间)或编译库是作为扩展提供的,所以我认为 .NET 中也有类似的方法。
最初,我还没有打算围绕 ASP.NET Core。我需要为我的简单控制台 C# 应用程序(VS Code 和 .NET Core)存储一些配置。我发现了很多主题(例如这里:How to read values from config.json in Console Application)来阅读 JSON(推荐)配置。鉴于此,我添加了三个必要的 nugget 包:
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Configuration.FileExtensions;
using Microsoft.Extensions.Configuration.Json;
我需要使用:
new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json").Build();
这将返回一个实现IConfigurationRoot/IConfiguration 接口的对象。但是所有示例都是在 ASP.NET Core 上下文中给出的。我有一个非常简单的应用程序,我还不需要任何 ASP.NET 功能。
所以我尝试在没有 ASP.NET 的情况下访问 IConfigurationRoot。结果对象存储配置文件中的值,但没有其接口的所有方法来访问它们。
如何在 .NET 命名空间的上下文中解释这一点? ASP.NET Core 是否实现了从 IConfiguration 访问值的方法,例如 Get<T>()?
如果Microsoft.Extensions.Configuration 是Microsoft.AspNetCore.App 的一部分或严重依赖于Microsoft.AspNetCore.App,为什么它在不同的命名空间中?
如果我添加 ASP.NET Core(NuGet 包和命名空间),会不会有点矫枉过正?
也许我应该使用 ConfigurationBuilder 以外的其他东西来读取 JSON?
【问题讨论】:
-
IMO 有点矫枉过正。您可以使用 JSON.NET 库 (NewtonSoft.Json NuGet) 执行
string json = File.ReadAllLines("path"); var deserialized = JsonConvert.DeserializeObject<SomeClass>(json);
标签: c# asp.net-core .net-core asp.net-core-configuration