Presumo che si desideri accedere al file appsettings.json
dall'applicazione Web poiché le librerie di classi non dispongono di un appsettings.json
per impostazione predefinita.
Creo una classe del modello che ha proprietà che corrispondono alle impostazioni in una sezione in appsettings.json
.
Sezione in appsettings.json
"ApplicationSettings": {
"SmtpHost": "mydomain.smtp.com",
"EmailRecipients": "[email protected];[email protected]"
}
classe corrispondenza di modello
namespace MyApp.Models
{
public class AppSettingsModel
{
public string SmtpHost { get; set; }
public string EmailRecipients { get; set; }
}
}
quindi popolare che classe del modello e aggiungerlo alla collezione IOptions
nel contenitore DI (questo è fatto nel metodo Configure()
della classe Esecuzione automatica).
services.Configure<AppSettingsModel>(Configuration.GetSection("ApplicationSettings"));
// Other configuration stuff
services.AddOptions();
Quindi è possibile accedere a tale classe da qualsiasi metodo che il quadro chiama aggiungendolo come parametro nel costruttore. Il framework gestisce la ricerca e la fornitura della classe al costruttore.
public class MyController: Controller
{
private IOptions<AppSettingsModel> settings;
public MyController(IOptions<AppSettingsModel> settings)
{
this.settings = settings;
}
}
Poi, quando un metodo in una libreria di classi necessita delle impostazioni, che sia passare le impostazioni singolarmente o passare l'intero oggetto.
fonte
2016-07-15 14:50:41
Eventuali duplicati di [Uso IConfiguration in C# Class Library] (https://stackoverflow.com/questions/27880433/using-iconfiguration-in-c-sharp-class-library) –
È lo stesso problema che [Uso di IConfiguration in C# Class Library] (https://stackoverflow.com/q/27880433/1647238), vedere [risposta] (https://stackoverflow.com/a/47645131/1647238) –