gpt4 book ai didi

c# - 如何从 ServiceProvider 构建 ServiceCollection?

转载 作者:行者123 更新时间:2023-12-05 01:16:29 27 4
gpt4 key购买 nike

我正在使用这种方法构建服务实现:

Sample image

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

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

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

注意

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

最佳答案

How do you build a ServiceCollection out of a ServiceProvider?

简答:你不能开箱即用

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

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

如果对原始集合进行了修改,我建议您只保留对原始集合的引用并根据需要构建新的提供程序。

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

Provides an extension point for creating a container specific builder and an IServiceProvider.

拥有您想要的功能。

关于c# - 如何从 ServiceProvider 构建 ServiceCollection?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53580470/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com