L’injection de configuration en .NET permet d’accéder aux paramètres (appsettings.json, variables d’environnement, etc.) via le système d’injection de dépendances.
Principe :
- Les valeurs de configuration sont chargées au démarrage (ex: via IConfiguration).
- On peut injecter IConfiguration ou des objets typés (Options pattern) dans les classes (contrôleurs, services).
Exemple simple
Soit le fichier de configuration suivant
{
"CheminOption"
{
"MonOption" :"valeur"
}
}
Et la classe correspondante de sérialisation Json
public class MySettings
{
static readonly string Path = "CheminOption"
string MonOption {get;set;}
}
Configuration au démarrage
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
// Injection de la config
services.Configure<MySettings>(Configuration.GetSection(MySettings.Path));
}
[!TIP]
La méthode d’extentionConfigure<T>(this IServiceCollection services, IConfiguration config)
se trouve dansMicrosoft.Extensions.Options.ConfigurationExtensions
. IL faut l’ajouter via les Nugets.
Injection dans un service
public class MyService
{
private readonly MySettings _settings;
public MyService(IOptions<MySettings> options)
{
_settings = options.Value;
}
}
Les types d’options
En .NET, il existe plusieurs variantes d’IOptions
pour gérer la configuration :
-
**IOptions
** Fournit les valeurs de configuration typées. Usage classique : injecté dans le constructeur, accès via `.Value`. -
**IOptionsSnapshot
** Permet d’obtenir la configuration actualisée à chaque requête (scope). Utile pour les applications web où la config peut changer entre les requêtes. -
**IOptionsMonitor
** Permet de surveiller les changements de configuration en temps réel et d’exécuter du code quand la config change. Utile pour les applications qui doivent réagir dynamiquement aux modifications.