据我所知,注入类直到一个构造函数被调用时才被激活(就像我的MVC项目中的Controller)。然而,是否有可能立即强制激活Singleton,这样我就不必等待控制器被调用了?我想我可以这样做:
services.AddSingleton(new MySingleton());
但是如果MySingleton在它的构造函数中使用DI呢?有没有方法调用构造函数?我是否应该改为将构造函数更改为将IServiceProvider作为参数并手动提取依赖项?:
_myDependency = serviceProvider.GetService<MyDependency>();
3条答案
按热度按时间mzaanser1#
或者,您可以通过在startup.cs内的configure方法中调用服务来激活服务
41zrol4v2#
AddHostedService()
将立即示例化服务,但也有一些缺点。6pp0gazn3#
假设我们实现了一个这样的类。
如果我没理解错你的问题,你要找的是这样的东西。
这将创建一个实现工厂,用于在需要时初始化单元集。它是一个重载,用于在手动初始化类型时提供服务提供程序。
例如,如果您需要在注册后立即访问您的单例。