gpt4 book ai didi

c# - 如何在不使用依赖注入(inject)的情况下实例化 ILoggerFactory?

转载 作者:行者123 更新时间:2023-11-30 23:08:38 27 4
gpt4 key购买 nike

我有一个需要无参数构造函数的现有类。我想记录一个错误和其中的一些其他数据。在我的应用程序的其他任何地方,我都将 ILoggerFactory 放在我的构造函数中,DI 会处理它,因此我可以记录等等。由于无参数构造函数的要求,在这种情况下我不能这样做。

我可以创建 ILoggerFactory 的实例或我从 Startup 类放入依赖注入(inject)流中的任何其他类吗?

最佳答案

在 Configure 中(在 Startup.cs 中),您将传入 IApplicationBuilder,它具有 ApplicationServices 属性 (IServiceProvider)。

你可以很容易地做类似的事情

public void Configure(IApplicationBuilder app)
{
GetMeSomeServiceLocator.Instance = app.ApplicationServices;
}

public static class GetMeSomeServiceLocator
{
public static IServiceProvider Instance { get; set; }
}

然后,在完全不相关的地方,做

public void SomeRandomMethod()
{
var service = GetMeSomeServiceLocator.Instance.GetService<MyAwesomeService>();

// Do something with service
}

这是一个可怕的反模式,但是你永远不应该这样做。

无耻地盗自https://github.com/aspnet/DependencyInjection/issues/294 (这样它就会留在这里供后代使用)。

关于c# - 如何在不使用依赖注入(inject)的情况下实例化 ILoggerFactory?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46383377/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com