I read the great article about the configuration of ASP.NET Core web application - Strongly Typed Configuration Settings in ASP.NET Core. As for me, it is better than access via dictionary's keys but it is always boring to create another POCO classes. I prefer to use a dynamic object. And it is easy to replace POCO class with dynamic.
First of all, I replaced ConfigureServices method with the next code:public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.AddOptions(); //be careful. don't miss options injection
services.Configure< ExpandoObject >(Configuration.GetSection("MySettings"));
}
And inject settings in the controller:
private dynamic MySettings { get; set; }
public HomeController(IOptions< ExpandoObject > settings)
{
MySettings = settings.Value;
}
Now, you could use it like usual instance.
public IActionResult Index()
{
ViewBag.ApplicationName = MySettings.ApplicationName;
return View();
}
This way has a number of disadvantages:
- The risk of a typo - do you know how to detect if a property exists on an ExpandoObject? ExpandoObject is inherited from Dictionary
. So check doesn't look graceful. - Complex properties. As I mentioned, ExpandoObject is inherited from Dictionary
Also, you could get more information about asp.net core configuration in Configuration in ASP.NET Core article.
No comments:
Post a Comment