首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从ServiceCollection中构建ServiceProvider?

如何从ServiceCollection中构建ServiceProvider?
EN

Stack Overflow用户
提问于 2018-12-02 13:00:49
回答 1查看 7.4K关注 0票数 3

我正在使用以下方法构建一个服务实现:

我正在使用Microsoft.Extensions.DependencyInjection,并试图实现以下目标:

  • 创建本地ServiceCollection,保持原始ServiceProvider (和底层ServiceCollection)不受影响
  • 将当前类型(TViewModel)注册到本地ServiceCollection
  • 将父IServiceProvider (从另一个ServiceCollection构建)提供的所有服务添加到本地ServiceCollection中。
  • 使用本地ServiceCollection创建本地ServiceProvider,它能够提供当前正在执行的类型的实例。

我在这里做了什么疯狂的事吗?在我看来,这里似乎做了一些奇怪的事情,因为它的API不存在以从另一个ServiceCollection初始化ServiceProvider。

Note

我不想在原始的serviceCollection.AddX上运行ServiceCollection。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-02 14:38:05

如何从ServiceCollection中构建ServiceProvider?

简短的回答:你不能开箱即用

一旦构建了服务提供程序,对服务集合的任何更改都不会对提供程序产生影响。

最终构建的ServiceProvider类不公开获取用于构建它的集合的任何方法。

我建议您保留对原始集合的引用,并在对原始集合进行修改时根据需要构建一个新的提供程序。

否则,您需要创建自己的IServiceProviderFactory<TContainerBuilder>

提供一个扩展点,用于创建特定于容器的构建器和IServiceProvider

拥有你想要的功能。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53580470

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档