Мне нужно передать экземпляр IOptions методу в качестве параметра, как показано ниже: любая идея?
services.SetWaitAndRetryPolicy<CustomHttpClient>(); //how to retrieve and pass instance of IOptions<MyConfig>
Я перехожу по ссылкам ниже и внизу:
Как читать значения AppSettings из файла .json в ASP.NET Core
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
// Add functionality to inject IOptions<T>
services.AddOptions();
// Add our Config object so it can be injected
services.Configure<MyConfig>(Configuration.GetSection("MyConfig"));
services.SetWaitAndRetryPolicy<CustomHttpClient>(); //how to retrieve and pass instance of IOptions<MyConfig>
}
public static class IServiceCollectionExtension
{
public static void SetWaitAndRetryPolicy<T>(this IServiceCollection services, IOptions<MyConfig> config) where T : class
{
}
}
Как получить экземпляр IConfiguration в ядре asp.net?
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration/options?view=aspnetcore-2.2
ЯДРО ASP.NET 2.2
Если вы используете метод расширения для регистрации своего класса CustomHttpClient
, тогда вы получаете доступ к параметрам в методе настройки.
public static class IServiceCollectionExtension
{
public static void SetWaitAndRetryPolicy<T>(this IServiceCollection services) where T : class
{
services.AddHttpClient<T>((sp, client) =>
{
var options = sp.GetService<IOptions<MyConfig>>();
...
});
}
}
Одним из параметров действия настройки является IServiceProvider
. Отсюда вы можете получить доступ к любой из зарегистрированных служб, в данном случае к настройкам IOptions<MyConfig>
.