是否可以在 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 以允许某种模拟机制。