[英]Read configuration using IOptions<Configuration>
我正在嘗試使用選項模式讀取配置。 我想從給定IOptions<Configuration>
作為注入的 appsettings 中讀取連接字符串。 我試了很多方法,但我無法弄明白,請幫忙。
private readonly Configuration _config;
private readonly string _connectionString;
public QueueClientFactory(IOptions<Configuration> config)
{
_config = config.Value;
var _connectionString = _config.GetSection("Queue:ConnectionString").Get<string>(); //but this is not available in Configuration rather in IConfiguration
}
您應該創建一個 class 來保存您要在QueueClientFactory
中使用的配置部分。
假設您的 settings.json 看起來像這樣:
...
"AllowedHosts": "*",
"Queue": {
"ConnectionString": "connection;string;here;",
"OtherProperty": "Something"
}
...
創建具有匹配名稱的 model 以綁定到配置值:
public class QueueClientConfig
{
public string ConnectionString { get; set; }
// map any other properties you need
}
在您的 Startup.cs/Program.cs class 中:
public void ConfigureServices(IServiceCollection services)
{
...
services.Configure<QueueClientConfig>(_configuration.GetSection("Queue"));
...
}
或者,如果您使用的是 .NET 6:
builder.Services.Configure<QueueClientConfig>(builder.Configuration.GetSection("Queue"));
然后在QueueClientFactory
中,您可以訪問配置值:
private readonly QueueClientConfig queueClientConfig;
public QueueClientFactory(IOptions<QueueClientConfig> options)
{
queueClientConfig = options.Value;
}
或者,您應該能夠將IConfiguration
傳遞給工廠並讓 DI 自動處理它:
private readonly IConfiguration _config;
public QueueClientFactory(IConfiguration config)
{
_config = config;
_connectionString = _config.GetSection("Queue:ConnectionString").Get<string>();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.