Donc, il ya vraiment deux façons d'aller à ce sujet.
Option 1 : La Classe D'Options
Vous avez un appsettings.fichier json :
{
"myConfiguration": {
"myProperty": true
}
}
Vous créez une Configuration POCO comme suit :
public class MyConfiguration
{
public bool MyProperty { get; set; }
}
Dans votre démarrage.cs vous avez quelque chose dans votre ConfigureServices qui enregistre la configuration :
public void ConfigureServices(IServiceCollection services)
{
services.Configure<MyConfiguration>(Configuration.GetSection("myConfiguration"));
}
Puis dans votre contrôleur/service que vous injectez dans le IOptions et c'est utilisable.
public class ValuesController : Controller
{
private readonly MyConfiguration _myConfiguration;
public ValuesController(IOptions<MyConfiguration> myConfiguration)
{
_myConfiguration = myConfiguration.Value;
}
}
Personnellement je n'aime pas utiliser IOptions parce que je pense qu'il traîne le long de la partie supplémentaire de l'ordure que je ne veux pas vraiment, mais vous pouvez faire des choses très intéressantes comme la permutation à chaud, et des trucs avec elle.
Option 2 : Configuration de POCO
C'est essentiellement le même, mais dans votre Configurer les Services de la méthode, au contraire, vous lier à un singleton de votre POCO.
public void ConfigureServices(IServiceCollection services)
{
//services.Configure<MyConfiguration>(Configuration.GetSection("myConfiguration"));
services.AddSingleton(Configuration.GetSection("myConfiguration").Get<MyConfiguration>());
}
Et puis, vous pouvez simplement injecter le POCO directement :
public class ValuesController : Controller
{
private readonly MyConfiguration _myConfiguration;
public ValuesController(MyConfiguration myConfiguration)
{
_myConfiguration = myConfiguration;
}
}
Un peu simpliste, parce que vous devriez probablement utiliser une interface pour effectuer les tests unitaires un peu plus facile, mais vous obtenez l'idée.
Pour la plupart prises à partir d'ici : http://dotnetcoretutorials.com/2016/12/26/custom-configuration-sections-asp-net-core/