为什么 Logger<MyClass> 不能自动作为 DI 服务使用

Why is Logger<MyClass> not automatically available as DI service

尝试实例化时

public class MyClass : BackgroundService {
  private ILogger<MyClass> Logger {get;}
  public MyClass(Logger<MyClass> logger) {
    Logger = logger
  }
}

通过 .Net DI 通过注册 MyClass 通过

services.AddHostedService<MyClass>();

当class激活时,抛出异常:

System.InvalidOperationException: 'Unable to resolve service for type 'Microsoft.Extensions.Logging.Logger1[MyClass]' while attempting to activate 'MyClass'.'`

我了解到 ILogger<T> 应该自动适用于所有类型 T

我应该怎么做才能解决这个问题?

虽然 ILogger<T> 自动可用,但 Logger<T> 不是。

将构造函数参数从 Logger<MyClass> 更改为 ILogger<MyClass>,然后一切正常。