除了 ConfigureService 方法之外,是否可以从控制器或管理器 class 添加服务

Is it possible to add a service from a controller or manager class other than the ConfigureService method

我想使用

services.AddPredictionEnginePool<..>

当我使用“IServiceCollection DI”时,我收到以下通知

无法实例化服务类型 'Microsoft.Extensions.DependencyInjection.IServiceCollection' 的实现类型 'Microsoft.Extensions.DependencyInjection.IServiceCollection'。

我该如何使用它;

services.AddPredictionEnginePool<..>

来自其他 类.

为什么我想做;

使用该服务的原因是在运行时添加一个新对象。

IServiceCollection是DI容器的配置;你不应该在运行时使用它。最多,人们会使用 IServiceProvider(将其用作服务定位器),但在使用 DI 时也可以将其视为 anti-pattern。

如果没有关于您要完成的确切事情的更多上下文,我建议使用某种知道如何在运行时创建这些对象的工厂 class(基于某些 data/config), 并在需要的地方注入工厂。

https://www.martinfowler.com/articles/injection.html