我正在运行.NET Core 2.2应用程序,并且我想在Startup.cs中进行初始设置后立即运行一些代码。该类依赖于注册的类型,我不太了解如何使用已注入(inject)的依赖项创建一个istance。假设我有以下要在安装完成后立即运行的类。
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)中,您可以通过执行类似
container.GetInstance<RunAfterStartup>().Foo()
的操作来使用SimpleInjector来执行此操作,但是我不确定它在.NET Core中如何工作,我只想使用内置的DI 。 最佳答案
首先使用RunAfterStartup
方法将ConfigureServices
添加到您的服务中:
services.AddSingleton<RunAfterStartup>();
现在,您可以将此类注入(inject)
Configure
方法:public void Configure(IApplicationBuilder app, RunAfterStartup runAfterStartup)
{
app.UseMvc();
runAfterStartup.Foo();
}