簡體   English   中英

使用 IOptions 讀取配置<configuration></configuration>

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM