IHttpClientFactory のドキュメントを見ると IHttpClientFactory を受け取って CreateClient をするか、型指定されたクライアント機能を使って HttpClient を受け取るかという方法が書いてあるのですが、型指定されていない普通のクラスで HttpClient を DI してもらったらどうなるのか?というのが明示的に書いてないようなので調べてみました。(書いてあったらごめんなさい)
答えは以下のコードにありました。
IServiceCollection に対して AddHttpClient をすると、内部で HttpClient も登録されていて IHttpClientFactory の CreateClient(string.Empty) をした結果のインスタンスがわたってくるみたいです。
HttpClientFactoryServiceCollectionExtensions.cs
// Register default client as HttpClient
services.TryAddTransient(s =>
{
return s.GetRequiredService<IHttpClientFactory>().CreateClient(string.Empty);
});
なので IHttpClientFactory を受け取って CreateClient するだけなら直接 HttpClient を受け取るようにしてしまってもよさそうですね。
ふぅ、すっきり。