我已经这样配置了控制台应用程序的 Main
I've configured my console application's Main like so
var services = new ServiceCollection() .AddLogging(logging => logging.AddConsole()) .BuildServiceProvider();然后我尝试在另一个类中使用它
And then I try to use it in another class like so
private readonly ILogger _logger; public MyClass(ILogger logger) { _logger = logger; } public void MyFunc() { _logger.Log(LogLevel.Error, "My Message"); }
System.InvalidOperationException:'无法解析服务对于类型'Microsoft.Extensions.Logging.ILogger'
System.InvalidOperationException: 'Unable to resolve service for type 'Microsoft.Extensions.Logging.ILogger'
我已经尝试过解决方案在这里,但它对我不起作用。
I've tried the solutions here but it didn't work for me.
编辑 > 基于Yaakov的以下注释和此Github评论通过执行此操作,我可以正确解决此问题
Edit Based on Yaakov's comment below and this Github comment I'm able to resolve it correctly by doing this
public MyClass(ILogger<MyClass> logger) { _logger = logger; }我更希望在最初的中使用它BuildServiceProvider ,但是每次我想使用记录器(或创建自己的ILogger)时,我都要重复一次。
I would have preferred to have this in the initial BuildServiceProvider but looks like I'm gonna have to repeat this every time I want to use the logger (or create my own ILogger).
推荐答案ILogger 不再默认注册,但 ILogger< T> 已注册。如果仍要使用ILogger,则可以使用以下(Startup.cs)手动注册它:
ILogger is no longer registered by default but ILogger<T> is. If you still want to use ILogger you can registered it manually with the following (Startup.cs):
public void ConfigureServices(IServiceCollection services) { var serviceProvider = services.BuildServiceProvider(); var logger = serviceProvider.GetService<ILogger<AnyClass>>(); services.AddSingleton(typeof(ILogger), logger); ... }AnyClass可以是通用的东西,例如:
Where AnyClass can be something generic, such as:
public class ApplicationLogs { }因此:
public void ConfigureServices(IServiceCollection services) { var serviceProvider = services.BuildServiceProvider(); var logger = serviceProvider.GetService<ILogger<ApplicationLog>>(); services.AddSingleton(typeof(ILogger), logger); ... }ILogger现在将通过构造函数注入进行解析
ILogger will now resolve via constructor injection
更多推荐
无法从Microsoft.Extensions.Logging解析ILogger
发布评论