Microsoft.Extensions Configuration Patterns
When to Use This Skill
Use this skill when:
- Binding configuration from appsettings.json to strongly-typed classes
- Validating configuration at application startup (fail fast)
- Implementing complex validation logic for settings
- Designing configuration classes that are testable and maintainable
- Understanding IOptions<T>, IOptionsSnapshot<T>, and IOptionsMonitor<T>
Reference Files
- advanced-patterns.md [blocked]: Validators with dependencies, named options, complete production example (AkkaSettings), and testing validators
Why Configuration Validation Matters
The Problem: Applications often fail at runtime due to misconfiguration - missing connection strings, invalid URLs, out-of-range values. These failures happen deep in business logic, far from where configuration is loaded.
The Solution: Validate configuration at startup. If invalid, fail immediately with a clear error message.
Pattern 1: Basic Options Binding
Define a Settings Class
Bind from Configuration
Consume in Services
Pattern 2: Data Annotations Validation
For simple validation rules, use Data Annotations:
Enable Data Annotations Validation
Key Point: .ValidateOnStart() is critical. Without it, validation only runs when the options are first accessed.
Pattern 3: IValidateOptions<T> for Complex Validation
Data Annotations work for simple rules, but complex validation requires IValidateOptions<T>:
Implementing IValidateOptions
Register the Validator
Order matters: Data Annotations run first, then IValidateOptions validators. All failures are collected together.
See advanced-patterns.md [blocked] for validators with dependencies, named options, and a complete production example.
Pattern 4: Options Lifetime
IOptionsMonitor for Background Services
Pattern 5: Post-Configuration
Modify options after binding but before validation:


