gpt4 book ai didi

c# - 将配置绑定(bind)到 .NET Core 2.0 中的对象图

转载 作者:太空狗 更新时间:2023-10-29 18:11:42 27 4
gpt4 key购买 nike

我正在制作 .NET Core 2.0 应用,我需要对其进行配置。我在看 this documentation似乎在 .NET Core 1.0 中你可以这样做:

var appConfig = new AppSettings();
config.GetSection("App").Bind(appConfig);

在 .NET Core 1.1 中,您可以:

var appConfig = config.GetSection("App").Get<AppSettings>();

但是 Bind 和 Get 都不存在于 .NET Core 2.0 中。实现这一目标的新方法是什么?

谢谢,

乔希

最佳答案

您仍然可以同时执行这两项操作。由于您在控制台应用程序中,因此可能不使用 ASP.NET Core 元数据包,因此您需要确保具有正确的依赖项。

为了将配置绑定(bind)到对象,您需要 Microsoft.Extensions.Configuration.Binder包裹。那么,这两种解决方案应该都能正常工作。


顺便说一句。即使您在控制台应用程序中,您仍然可以使用 ASP.NET Core 附带的依赖项注入(inject)容器。我个人发现它的设置非常简单,所以如果你仍然可以修改你的应用程序来使用它,那可能是值得的。设置看起来像这样:

var configuration = new ConfigurationBuilder()
.AddJsonFile("config.json", optional: false)
.Build();

var services = new ServiceCollection();
services.AddOptions();

// add your services here
services.AddTransient<MyService>();
services.AddTransient<Program>();

// configure options
services.Configure<AppSettings>(configuration.GetSection("App"));

// build service provider
var serviceProvider = services.BuildServiceProvider();

// retrieve main application instance and run the program
var program = serviceProvider.GetService<Program>();
program.Run();

然后,所有已注册的服务都可以像在 ASP.NET Core 中那样获取依赖项。为了使用你的配置,你可以注入(inject) IOptions<AppSettings>像往常一样打字。

关于c# - 将配置绑定(bind)到 .NET Core 2.0 中的对象图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47863078/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com