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

标签 c# .net-core-2.0

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

相关文章:

c# - 使用 ninject 创建初始化后对象

c# - 在 Web API 中解密不记名 token

c# - 如何使用 .NET Core 从命令行从 nuget 下载包?

asp.net-core - 升级到.NET Core 2.0 : PackageTargetFallback and AssetTargetFallback cannot be used together

c# 在 TransactionScope 事务中获取当前连接

c# - 保证变量的最新值始终对多处理器系统上的多个线程可见

c# - 使某个网址仅在 48 小时内有效

continuous-integration - VSTS .Net Core 2.0 重命名已发布的 zip 文件

c# - 无法在 .NET Core 2.0 的启动构造函数中注入(inject)我自己的对象

c# - .NET Core 2.0 支持使用 'Microsoft.Chart.Controls'