What is the Cleanest Way to Get Configuration Values in NET?

Listen to this Post

The cleanest way to manage configuration values in .NET is by using the Options pattern. This approach provides a structured and scalable way to handle settings from various sources like environment variables, JSON files, and user secrets.

Why Use the Options Pattern?

  • Strongly-Typed Configuration: Avoid magic strings and reduce runtime errors.
  • Validation Support: Apply data annotations to enforce correct settings.
  • Dependency Injection (DI) Friendly: Easily inject configurations into services.
  • Scalability: Manage complex configurations without messy `IConfiguration` access.

Implementation Steps

1. Define a Configuration Class

Create a class to represent your settings:

public class AppSettings 
{ 
public string ApiKey { get; set; } 
public int MaxRetries { get; set; } 
[Required] 
public string DatabaseConnection { get; set; } 
} 

2. Bind Configuration in `Program.cs`

Load settings from `appsettings.json` and bind them to your class:

var builder = WebApplication.CreateBuilder(args);

builder.Services.Configure<AppSettings>(builder.Configuration.GetSection("AppSettings")); 

3. Inject and Use `IOptions`

Access settings in your services:

public class MyService 
{ 
private readonly AppSettings _settings;

public MyService(IOptions<AppSettings> options) 
{ 
_settings = options.Value; 
}

public void UseConfig() 
{ 
Console.WriteLine($"API Key: {_settings.ApiKey}"); 
} 
} 

You Should Know:

  • Environment-Specific Configs: Use `appsettings.Development.json` for local dev.
  • Secret Management: Store sensitive data securely with dotnet user-secrets.
  • Validation: Enable automatic validation with ValidateDataAnnotations().

Linux & Windows Commands for Configuration Management