Friday, June 13, 2025

๐Ÿง  Why You Should Use IConfiguration Instead of Hardcoding Settings in .NET




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