我正在制作.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>();
但在.NET Core 2.0中既不存在Bind也不存在.实现这一目标的新方法是什么?
谢谢,
玩笑
解决方法
你仍然可以做这两件事.由于您处于控制台应用程序中,并且因此可能不使用ASP.NET Core元数据包,因此您需要确保具有正确的依赖项.
要将配置绑定到对象,您需要Microsoft.Extensions.Configuration.Binder包.然后,两种解决方案都应该正常工作.
顺便说一句.即使您在控制台应用程序中,您仍然可以使用ASP.NET Core附带的依赖注入容器.我个人发现设置起来非常简单,所以如果你仍然可以修改你的应用程序来使用它,那么它可能是值得的.设置将如下所示:
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中一样使用依赖项.然后,要使用您的配置,您可以注入IOptions< AppSettings>通常类型.