Lop*_*uch 4 c# singleton dependency-injection asp.net-core-3.0
如何立即实例化单例
services.AddSingelton<IMySingleton, MySingleton>()
Run Code Online (Sandbox Code Playgroud)
我现在正在使用这个肮脏的解决方法(GetService在每个请求中调用):
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.ApplicationServices.GetService<IFirebaseApp_ForInjection>();
//......
}
Run Code Online (Sandbox Code Playgroud)
我知道我的单例应该在构造函数注入需要时实例化,但我不需要将它注入到任何构造函数中。
如果目标单例没有显式注入的依赖项,则在将其添加到服务集合之前没有什么可以阻止它被实例化
public void ConfigureServices(IServiceCollection services) {
//...
IMySingleton instance = new MySingleton();
services.AddSingelton(instance)
//...
}
Run Code Online (Sandbox Code Playgroud)
如果存在依赖关系,则另一个选项与当前显示的解决方法类似,通过Configure在启动时将其注入到方法中
public void Configure(IApplicationBuilder app, IWebHostEnvironment env, IMySingleton instance) {
//...
}
Run Code Online (Sandbox Code Playgroud)
这样,任何已注册的依赖项都将被解析和注入。