我正在制作 .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/