gpt4 book ai didi

c# - 在 Startup 类中获取依赖于 DI 的类的实例

转载 作者:行者123 更新时间:2023-12-03 17:59:43 25 4
gpt4 key购买 nike

我正在运行 .NET Core 2.2 应用程序,并且我想在 Startup.cs 中的初始设置后立即运行一些代码。该类依赖于注册类型,我真的不明白我应该如何创建一个已经注入(inject)依赖项的实例。假设我有以下类,我想在设置完成后立即运行。

public class RunAfterStartup
{
private readonly IInjectedService _injectedService;

public RunAfterStartup(IInjectedService injectedService)
{
_injectedService = injectedService;
}

public void Foo()
{
_injectedService.Bar();
}
}
有什么方法可以运行 RunAfterStartup().Foo()在启动?
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton(typeof(IInjectedService), typeof(InjectedService));
...
}

public void Configure(IApplicationBuilder app)
{
app.UseMvc();

// I assume this has to go here, but could be anywhere
var runAfterStartup = MagicallyGetInstance();
runAfterStartup.Foo();
}
我知道在.NET Framework(不确定Core)中,您可以使用SimpleInjector 执行此操作,方法是执行 container.GetInstance<RunAfterStartup>().Foo() 之类的操作。 ,但我不确定这在 .NET Core 中是如何工作的,我只想使用内置的 DI。

最佳答案

先加RunAfterStartupConfigureServices 中为您提供服务方法:

services.AddSingleton<RunAfterStartup>();

现在你可以将这个类注入(inject)到 Configure方法:
public void Configure(IApplicationBuilder app, RunAfterStartup runAfterStartup)
{
app.UseMvc();

runAfterStartup.Foo();
}

关于c# - 在 Startup 类中获取依赖于 DI 的类的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59661866/

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