我正在使用此方法构建服务实现:
我正在使用Microsoft.Extensions.DependencyInjection并试图实现以下目标:
我在这里疯了吗?对我来说,我似乎在这里做些奇怪的事情,因为它不存在用于从另一个ServiceProvider初始化ServiceCollection的API。
注意
我不想在原始ServiceCollection上运行serviceCollection.AddX。
答案 0 :(得分:3)
如何从ServiceProvider中构建ServiceCollection?
简短答案:您不能开箱即用
一旦构建了服务提供者,对服务集合的任何更改都不会对提供者产生影响。
最终构建的ServiceProvider
类没有公开任何方法来获取用于构建它的集合。
如果对原始集合进行了修改,我建议您仅保留原始集合的参考,并根据需要构建新的提供程序。
否则,您将需要创建自己的IServiceProviderFactory<TContainerBuilder>
提供了一个扩展点,用于创建容器特定的构建器和一个
IServiceProvider
。
具有您所需的功能。
答案 1 :(得分:0)
由于这会出现在 Google 搜索结果中,因此我将提供更新的答案。
现在可以通过将父 IServiceProvider
传递给 ServiceCollection
的构造函数来实现:
new ServiceCollection(serviceProvider)
。