System.Configuration.dll, we can add custom
configSections into either
Web.config files so that we can utilise strongly-typed configuration objects. On the other hand, .NET Core applications have replaced those
appsettings.json, which is more convenient for developers to use, especially for dependency injection (DI). In this post, we are going to walkthrough how we can deserialise the
appsettings.json for DI purpose.
When we create an ASP.NET Core web application, we have a basic
appsettings.json file looking like:
This is loaded up and built as an
IConfiguration instance in
Startup.cs. If we want to access to values, we simply call like:
This is good for fast application prototyping purpose, in general. However, if we need strongly-typed objects for those configurations, this is not ideal. How can we get the strongly typed objects then? Let’s have a look.
.NET Core RC1/RC2 Applications
Microsoft.Extensions.Configuration used to provide an extension method called
Get(string key). With this method, we can easily deserialise
appsettings.json object to an object of type
T. Let’s say we have the
AuthenticationSettings class representing the
authentication section in
appsettings.json. This is a sample code:
Now we have the
auth instance to be injected wherever we want by:
.NET Core Applications
In .NET Core applications, unfortunately, the
Get(string key) extension method has been removed. Instead,
Microsoft.Extensions.Configuration.Binder provides another extension method called
Bind(object instance). This actually binds an instance with the configuration value. Therefore, in order to have the same development experience as RC1/RC2, we should implement an extension method by ourselves like:
By implementing this extension method, we do the same approach as what we used to do in RC1/RC2 like above.
So far, we have briefly looked how we can deserialise
appsettings.json on .NET Core applications for injection use. This would be useful for our robust application development.