Skip to main content

Configuration Provider

Use TOON files as configuration sources in ASP.NET Core.

Installation

dotnet add package ToonNet.AspNetCore

Basic Usage

Add TOON Configuration File

using ToonNet.AspNetCore;

var builder = WebApplication.CreateBuilder(args);

// Add TOON configuration file
builder.Configuration.AddToonFile("appsettings.toon", optional: false, reloadOnChange: true);

var app = builder.Build();

Configuration File Example

appsettings.toon:

AppName: MyApplication
Version: 1.0.0
Database:
ConnectionString: Server=localhost;Database=mydb
MaxRetries: 3
Timeout: 30
Logging:
Level: Information
EnableConsole: true
Features:
- Authentication
- Caching
- Compression

Reading Configuration

// Read simple values
string appName = builder.Configuration["AppName"];
string version = builder.Configuration["Version"];

// Read nested values
string connectionString = builder.Configuration["Database:ConnectionString"];
int maxRetries = builder.Configuration.GetValue<int>("Database:MaxRetries");

// Bind to strongly-typed objects
var dbConfig = builder.Configuration.GetSection("Database").Get<DatabaseConfig>();

Strongly-Typed Configuration

public class DatabaseConfig
{
public string ConnectionString { get; set; }
public int MaxRetries { get; set; }
public int Timeout { get; set; }
}

// Register as options
builder.Services.Configure<DatabaseConfig>(
builder.Configuration.GetSection("Database")
);

// Use in services
public class DataService
{
private readonly DatabaseConfig _config;

public DataService(IOptions<DatabaseConfig> options)
{
_config = options.Value;
}
}

Environment-Specific Configuration

builder.Configuration
.AddToonFile("appsettings.toon", optional: false, reloadOnChange: true)
.AddToonFile($"appsettings.{builder.Environment.EnvironmentName}.toon",
optional: true, reloadOnChange: true);

appsettings.Development.toon:

Database:
ConnectionString: Server=localhost;Database=mydb_dev
Logging:
Level: Debug

appsettings.Production.toon:

Database:
ConnectionString: Server=prod-server;Database=mydb_prod
Logging:
Level: Warning

See Also