Код, который вы показали, является рекомендуемым подходом.
Комментарий о _gitHubClient
// к моему _gitHubClient не подключен обработчик !!!
кажется недоразумением.
_gitHubClient
- это ваша абстракция, которая упаковывает экземпляр HttpClient
в его реализацию GitHubClient
.
public class GitHubClient : IGitHubClient {
private readonly HttpClient _client; //<< Handler will be attached to this instance
public GitHubClient(HttpClient httpClient) {
_client = httpClient;
}
public async Task<string> GetData() {
return await _client.GetStringAsync("/");
}
}
Это тот упакованный экземпляр, который будет иметь прикрепленный обработчик.
Исходя из текущей конфигурации, всякий раз, когда каркас должен создать экземпляр IGitHubClient
производного GitHubClient
для инъекции, фабрика создаст HttpClient
с использованием настроек, предоставленных при запуске. Что также включает добавление HttpClientHandler
, предоставленного ConfigurePrimaryHttpMessageHandler