How to Implement Strongly Typed Configuration in .NET Core
Create a strongly typed configuration class for appsettings.json using required and init properties:
public class AppSettings
{
public required ConnectionStringsConfig ConnectionStrings { get; init; }
public required LoggingConfig Logging { get; init; }
public class ConnectionStringsConfig
{
public required string DefaultConnection { get; init; }
}
public class LoggingConfig
{
public required string LogLevel { get; init; }
}
}
Match your appsettings.json structure:
{
"ConnectionStrings": {
"DefaultConnection": "Server=myserver;Database=mydb;"
},
"Logging": {
"LogLevel": "Information"
}
}
Register in Program.cs:
builder.Services.Configure<AppSettings>(builder.Configuration);
Use in services:
public class MyService
{
private readonly AppSettings _appSettings;
public MyService(IOptions<AppSettings> options)
{
_appSettings = options.Value;
}
}
Use in Blazor SSR Razor file:
@inject IOptions<AppSettings> Options
<p>Logging level: @Options.Value.Logging.LogLevel</p>
Benefits of This Approach #
This implementation provides several advantages over traditional string-based configuration access:
- Compile-time type checking prevents configuration key typos
- IntelliSense support improves developer productivity
- The required modifier ensures all necessary configuration values are provided
- Init-only properties prevent accidental configuration modifications