Getting Started
Requirements
HatTrick.Configuration targets .NET 9 or later and has no external runtime dependencies.
Installation
dotnet add package HatTrick.ConfigurationNamespace: HatTrick.Configuration
JSON configuration
JsonConfigManager reads and writes plain C# types backed by JSON files in a single directory. Register a type against an existing file, then build the instance:
using HatTrick.Configuration;
public class AppSettings
{
public string ApiBaseUrl { get; set; }
public int TimeoutSeconds { get; set; }
}// ./config/app-settings.json
{
"ApiBaseUrl": "https://api.example.com",
"TimeoutSeconds": 30
}var configMgr = JsonConfigManager.BuildInstance("default")
.Register<AppSettings>("app-settings.json")
.Build();
AppSettings settings = configMgr.Get<AppSettings>();
Console.WriteLine(settings.ApiBaseUrl);Register<T> requires the target file to already exist at Build() time. See JSON Configuration for registration, reading, writing, and directory-scoping rules.
Environment variables
EnvVarConfigManager reads named environment variables, resolved once when the instance is built:
var envMgr = EnvVarConfigManager.BuildInstance("default")
.Register("API_KEY")
.Build();
string apiKey = envMgr.Get("API_KEY");Build() throws if a registered variable is not set in the process environment. See Core Concepts for how instance names are scoped per manager, and Environment Variables for the full read-once model.
Next steps
- Core Concepts: configuration managers, grouping via named instances, the builder pattern, and validation, encryption, and concurrency
- JSON Configuration: registration rules, reading, writing, and optimistic concurrency
- Environment Variables: registration and read-once semantics
- Encryption: AES-GCM encryption for files and variable values
- Validation: per-type and per-variable validators