C# 容器如何实际解析ILogger<;T>;
在ASP.NET Core 2中,当我们谈论日志记录时,只需通过C# 容器如何实际解析ILogger<;T>;,c#,asp.net-core,C#,Asp.net Core,在ASP.NET Core 2中,当我们谈论日志记录时,只需通过ILoggerFactory.AddProvider()注册提供程序或使用适当的扩展方法就足够了。然后您将能够解析ILogger(无需注册已关闭的ILogger)。我正在努力在ILogger工厂.CreateLogger调用和实际的ILogger解析之间架起一座桥梁:似乎有什么地方发生了魔法,但我没有找到。 有什么想法吗 一切都始于: 如上所述 最后,for记录器如下所示: services.TryAdd(ServiceDescri
ILoggerFactory.AddProvider()
注册提供程序或使用适当的扩展方法就足够了。然后您将能够解析ILogger
(无需注册已关闭的ILogger
)。我正在努力在ILogger工厂.CreateLogger
调用和实际的ILogger
解析之间架起一座桥梁:似乎有什么地方发生了魔法,但我没有找到。
有什么想法吗 一切都始于:
如上所述
最后,for记录器
如下所示:
services.TryAdd(ServiceDescriptor.Singleton<ILoggerFactory, LoggerFactory>());
services.TryAdd(ServiceDescriptor.Singleton(typeof(ILogger<>), typeof(Logger<>)));
public Logger(ILoggerFactory factory)
{
// ...
_logger = factory.CreateLogger(TypeNameHelper.GetTypeDisplayName(typeof(T)));
}
Logger
类的其余部分只是非泛型\u Logger
的一个传递,它现在包括T
类型的名称。这似乎是一个。您试图实现的最终目标是什么?“我试图了解ILogger在没有直接接口注册的情况下是如何解析的。就这样。还没问题:)你是想在图书馆里找到容器中个人ILogger注册的地方吗?@EugeneKomisarenko:是的
public Logger(ILoggerFactory factory)
{
// ...
_logger = factory.CreateLogger(TypeNameHelper.GetTypeDisplayName(typeof(T)));
}