是否可以在 IServiceScopeFactory.ServiceProvider.GetRequiredService<IServiceClass>() 中包含一个参数?
Is it possible to include an argument in the IServiceScopeFactory.ServiceProvider.GetRequiredService<IServiceClass>()?
假设我在“HostedService”class 中有以下代码,使用 IServiceScopeFactory 到 运行 范围并创建服务 class 实例(如此处解释 -> ):
using (var scope = ScopeFactory.CreateScope())
{
var provisioningService = scope.ServiceProvider.GetRequiredService<IProvisioningService>();
}
所以,我想做一些类似于下面代码的事情,以在实例服务创建中包含一个参数:
services.AddSingleton<IUserCarrierService>(x => new UserCarrierService(user));
但这是使用 IServiceScopeFactory class 完成的。如果不是,是否可以在 .net 核心程序执行的后期完全覆盖 Startup class 中内置的所有 once DI?
IServiceScopeFactory
does not allow passing overrides/additional dependencies when creating nested scopes. You need either use 3rd party container which allows adding registrations to a lifetime scope like Autofac (also see this) 或重新设计 IUserCarrierService
以允许某种模拟机制。
假设我在“HostedService”class 中有以下代码,使用 IServiceScopeFactory 到 运行 范围并创建服务 class 实例(如此处解释 ->
using (var scope = ScopeFactory.CreateScope())
{
var provisioningService = scope.ServiceProvider.GetRequiredService<IProvisioningService>();
}
所以,我想做一些类似于下面代码的事情,以在实例服务创建中包含一个参数:
services.AddSingleton<IUserCarrierService>(x => new UserCarrierService(user));
但这是使用 IServiceScopeFactory class 完成的。如果不是,是否可以在 .net 核心程序执行的后期完全覆盖 Startup class 中内置的所有 once DI?
IServiceScopeFactory
does not allow passing overrides/additional dependencies when creating nested scopes. You need either use 3rd party container which allows adding registrations to a lifetime scope like Autofac (also see this) 或重新设计 IUserCarrierService
以允许某种模拟机制。