Published on: June 13, 2025
Category: Wednesday Wisdom
Tags: IConfiguration, .NET Core, AppSettings, Dependency Injection, Best Practices, .NET Dev Corner, Maintainability
๐ค What’s the Problem with Hardcoding?
Hardcoding configuration values directly into your codebase might seem quick and easy, but it leads to several problems:
- ❌ Difficult to update settings across environments
- ❌ Violates DRY principle
- ❌ Breaks flexibility and scalability
- ❌ Risk of leaking secrets into version control
var connectionString = "Server=localhost;Database=AppDb;User Id=admin;";
This is not only insecure but also hard to maintain.
✅ Enter IConfiguration
– The Right Way
.NET Core provides the IConfiguration
interface to abstract and centralize your application settings.
It supports:
appsettings.json
- Environment variables
- Command-line args
- Azure Key Vault and more
๐ง How to Use IConfiguration
in .NET Core
Step 1: Define your settings in appsettings.json
{
"ConnectionStrings": {
"Default": "Server=localhost;Database=AppDb;User Id=admin;"
},
"AppSettings": {
"FeatureToggle": true,
"LogLevel": "Debug"
}
}
Step 2: Inject IConfiguration
via constructor
public class MyService
{
private readonly IConfiguration _config;
public MyService(IConfiguration config)
{
_config = config;
}
public void PrintConnection()
{
var conn = _config.GetConnectionString("Default");
Console.WriteLine(conn);
}
}
๐งช You can also bind whole sections to POCOs for cleaner usage.
๐งฉ Binding POCOs from Configuration
public class AppSettings
{
public bool FeatureToggle { get; set; }
public string LogLevel { get; set; }
}
builder.Services.Configure<AppSettings>(
builder.Configuration.GetSection("AppSettings"));
And inject with:
public class FeatureService
{
private readonly AppSettings _settings;
public FeatureService(IOptions<AppSettings> settings)
{
_settings = settings.Value;
}
public void CheckFeature()
{
if (_settings.FeatureToggle)
Console.WriteLine("Feature is ON");
}
}
๐ Benefits of Using IConfiguration
Aspect | Benefit |
---|---|
✅ Maintainability | Centralized settings file |
✅ Security | Easily integrates with secrets/KeyVault |
✅ Flexibility | Supports environment overrides |
✅ Testability | Easy to mock config values in unit tests |
๐ Final Thoughts
Whether you're building microservices or a single app, avoid hardcoded values. Use IConfiguration
to keep your code clean, secure, and environment-ready.
Clean config = clean code.
๐ฌ Stay Connected
- ๐ Blog: www.ajaygangwar.com
- ๐ผ LinkedIn: Ajay Gangwar
- ๐ง Email: seajaygangwar@gmail.com