Vse*_*lod 11 c# .net-core asp.net-core asp.net-core-configuration
ASP.NET Core是否实现了IConfiguration
对配置值的访问?
很可能是我的问题出现了,因为我不明白ASP.NET核心到底是什么.好吧,我知道它是一个Web框架,不确定,但看起来它是.NET中的命名空间,或者一个包...我知道在php中,框架可以是一组类(命名空间)或编译库,作为扩展提供,所以我在.NET中假设一个类似的方法.
最初,我并不打算围绕ASP.NET Core.我需要为我的简单控制台C#应用程序(VS Code和.NET Core)存储一些配置.我发现了许多主题(例如这里:如何从控制台应用程序中的config.json读取值)来读取JSON(推荐)配置.鉴于此,我添加了三个必要的块包:
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Configuration.FileExtensions;
using Microsoft.Extensions.Configuration.Json;
Run Code Online (Sandbox Code Playgroud)
我需要用:
new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json").Build();
Run Code Online (Sandbox Code Playgroud)
这将返回实现IConfigurationRoot
/ IConfiguration
interface 的对象.但是所有示例都是在ASP.NET Core上下文中给出的.我有一个非常简单的应用程序,我还不需要任何ASP.NET功能.
所以我试图在IConfigurationRoot
没有ASP.NET的情况下访问.生成的对象存储来自配置文件的值,但没有其接口的所有方法来访问它们.
如何在.NET命名空间的上下文中解释这一点?ASP.NET Core是否实现了从IConfiguration
类似访问值的方法Get<T>()
?
如果Microsoft.Extensions.Configuration
是一部分或严重依赖Microsoft.AspNetCore.App
,为什么它在不同的命名空间?
如果我添加ASP.NET Core(NuGet包和命名空间),它会是一种矫枉过正吗?
也许我应该使用soemthing而不是ConfigurationBuilder
阅读JSON?
pok*_*oke 29
Microsoft.Extensions.Configuration
与Microsoft.Extensions
命名空间中的其他包(例如Options或DependencyInjection)一样,是作为ASP.NET Core框架的一部分创建的包.ASP.NET Core及其所有相关软件包的构建方式是以非常模块化的方式,因此所有库都可以在ASP.NET Core上下文中使用,或者不使用.
您必须像库一样理解这些包.它们包含在ASP.NET Core中,因为框架构建在它们之上,但如果您不需要ASP.NET Core Web框架,您仍然可以单独使用这些库,而无需提及ASP.NET Core.这就是他们居住在Microsoft.Extensions
命名空间内的原因,而不是Microsoft.AspNetCore
:它们是完全独立的项目.当然,这些包的开发是由ASP.NET Core团队完成的,而ASP.NET Core的设计决策确实会影响这些扩展包的演变方式.但团队对这些包非常小心,因此一般使用不会受到影响.
所有人都说,你如何使用这些包?就像任何其他库一样,您只需添加一个NuGet引用即可.由于Microsoft.Extensions.Configuration
是基础库,不附带任何工具来加载文件,你还需要Microsoft.Extensions.Configuration.Json
,如果要加载JSON文件.
但那时它真的很直接:
var configuration = new ConfigurationBuilder()
.AddJsonFile("config.json")
.Build();
// retrieve configuration values
Console.WriteLine(configuration["foo"]); // bar
Console.WriteLine(configuration["baz:bar"]); // qux
Run Code Online (Sandbox Code Playgroud)
对于此示例,config.json
看起来像这样:
{
"foo": "bar",
"baz": {
"bar": "qux"
}
}
Run Code Online (Sandbox Code Playgroud)
所以你可以像这样加载配置.请务必查看文档.它可能与ASP.NET Core内部使用的配置有关,但基础概念仍然适用(例如配置路径的外观或绑定的工作原理).
最后,请注意,这实际上只是用于配置.从JSON加载数据只是您可以使用的众多配置源之一Microsoft.Extensions.Configuration
.但无论您将使用哪种提供程序,最终都会得到具有部分和关键路径概念的相同配置格式.
如果您在查看如何解析JSON的同时来到包中,那么您可能正在查看错误的工具.如果要解析JSON以检索正确的数据结构,就像使用JSON作为序列化数据的方法一样,那么您应该看一些不同的东西.解析JSON(序列化)的最常见解决方案是使用Json.NET,它是一种非常强大且灵活的工具,可以处理任何类型的JSON数据.
归档时间: |
|
查看次数: |
6447 次 |
最近记录: |