Skip to main content
BojanVeljanovski.com

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: