Skip to main content
BojanVeljanovski.com

AppSettings: Typed Configuration in .NET Core using the Options Pattern

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);
builder.Services.AddSingleton(x => x.GetRequiredService<IOptions<AppSettings>>().Value);

Use in services:

public class MyService(AppSettings _appSettings)
{
    public void DoWork()
		{
				var connectionString = _appSettings.ConnectionStrings.DefaultConnection;
				// ...
		}
}

Use in Blazor SSR Razor file:

@inject AppSettings appSettings

Benefits of This Approach #

This implementation provides several advantages over traditional string-based configuration access: