I am familiar w/ loading an appsettings.json section into a strongly typed object in .NET Core startup.cs. For example:
public class CustomSection { public int A {get;set;} public int B {get;set;} } //In Startup.cs services.Configure<CustomSection>(Configuration.GetSection("CustomSection")); //Inject an IOptions instance public HomeController(IOptions<CustomSection> options) { var settings = options.Value; }
I have an appsettings.json section who's key/value pairs will vary in number and name over time. Therefore, it's not practical to hard code property names in a class since new key/value pairs would require a code change in the class. A small sample of some key/value pairs:
"MobileConfigInfo": { "appointment-confirmed": "We've booked your appointment. See you soon!", "appointments-book": "New Appointment", "appointments-null": "We could not locate any upcoming appointments for you.", "availability-null": "Sorry, there are no available times on this date. Please try another." }
Is there a way to load this data into a MobileConfigInfo Dictionary object and then use the IOptions pattern to inject MobileConfigInfo into a controller?
The appsettings. json file is generally used to store the application configuration settings such as database connection strings, any application scope global variables, and much other information.
Go with this structure format:
"MobileConfigInfo": { "Values": { "appointment-confirmed": "We've booked your appointment. See you soon!", "appointments-book": "New Appointment", "appointments-null": "We could not locate any upcoming appointments for you.", "availability-null": "Sorry, there are no available times on this date. Please try another." } }
Make your setting class look like this:
public class CustomSection { public Dictionary<string, string> Values {get;set;} }
then do this
services.Configure<CustomSection>((settings) => { Configuration.GetSection("MobileConfigInfo").Bind(settings); });
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With