Явный доступ к Intance опций и передача его методу в ConfigureServices с помощью ASP.NET CORE API - PullRequest
0 голосов
/ 18 декабря 2018

Мне нужно передать экземпляр 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 CORE 2.2

1 Ответ

0 голосов
/ 18 декабря 2018

Если вы используете метод расширения для регистрации своего класса 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>.

...