Как зарегистрировать зависимые сервисы - PullRequest
1 голос
/ 11 марта 2020

Я регистрирую HttpClient следующим образом:

services.AddSingleton<HttpClient>();

, затем далее в коде я хочу зарегистрировать другой интерфейс, который зависит от этого:

services.AddSingleton<IMyRepository>(
    new MyRepository("<string>",
        "<string>",
        "<string>",
        ???,
        logger));

Так что я не уверен, что положить в ??? Я мог бы добавить 'new HttpClient ()', но это побеждает цель регистрации HttpClient. Мне в основном нужен метод, который я вызываю, чтобы получить ссылку, которая уже была добавлена. Идеи?

Спасибо.

1 Ответ

4 голосов
/ 11 марта 2020

Разрешите его у поставщика услуг:

services.AddSingleton<IMyRepository>(serviceProvider =>
    new MyRepository("<string>",
        "<string>",
        "<string>",
        serviceProvider.GetRequiredService<HttpClient>(),
        logger));

Кстати, вы, вероятно, хотите использовать HttpClientFactory (services.AddHttpClient();) вместо services.AddSingleton<HttpClient>();.

См. Вы (вероятно, все еще) используете HttpClient неправильно, и это дестабилизирует ваше программное обеспечение для получения информации о проблемах DNS, которые возникают с долгоживущим HttpClient c (или singleton), и почему вы должны использовать HttpClientFactory.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...