为什么 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.Logger
1[MyClass]' while attempting to activate 'MyClass'.'`
我了解到 ILogger<T>
应该自动适用于所有类型 T
。
我应该怎么做才能解决这个问题?
虽然 ILogger<T>
自动可用,但 Logger<T>
不是。
将构造函数参数从 Logger<MyClass>
更改为 ILogger<MyClass>
,然后一切正常。
尝试实例化时
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.Logger
1[MyClass]' while attempting to activate 'MyClass'.'`
我了解到 ILogger<T>
应该自动适用于所有类型 T
。
我应该怎么做才能解决这个问题?
虽然 ILogger<T>
自动可用,但 Logger<T>
不是。
将构造函数参数从 Logger<MyClass>
更改为 ILogger<MyClass>
,然后一切正常。