gpt4 book ai didi

c# - 如何注册和解析具有相同接口(interface)和实现的多个应用程序生命周期对象?

转载 作者:太空宇宙 更新时间:2023-11-03 22:37:01 27 4
gpt4 key购买 nike

有很多类似的问题,但它们似乎没有解决这个特定的用例。

根据我的配置(运行时),我正在尝试创建某个对象的多个实例(相同的实现,相同的接口(interface)),这些实例应该具有应用程序生命周期范围。

阅读doc's我明白了

  • Scoped 生命周期(根据 http 请求)
  • transient (根据分辨率)
  • 单例(应用程序生命周期)

所以基本上我需要单例,但是,我需要多个单例。

.AddSingleton 方法和重载似乎不支持任何命名实例。

我 checkout this question ,但他们使用的是不同的( transient )范围。

我可以在界面中放置一个 Name 属性,

有没有办法在应用程序生命周期范围内创建(和解析)具有相同实现和接口(interface)的多个相似对象?

最佳答案

Net Core DI 本身不支持命名实例。我相当确定以您详细说明的方式实现它并没有得到真正的支持。据我所知,您有两个选择,

  1. 使用不同的第 3 方 DI 提供程序(Ninject、SimpleInjector Autofac 等)
  2. 使用工厂模式创建工厂对象,让您解析所需的对象并使用 services.AddXXX 重载方法传入您的工厂类

此外,这可能是以下内容的副本:Dependency injection resolving by name

关于c# - 如何注册和解析具有相同接口(interface)和实现的多个应用程序生命周期对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54549640/

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