gpt4 book ai didi

dependency-injection - 依赖注入(inject) : How to construct a class that depends on runtime parameters?

转载 作者:行者123 更新时间:2023-12-01 00:59:57 25 4
gpt4 key购买 nike

我想在我们的应用程序中引入 DI。

在我们的应用程序中,我们有一些通用参数通过整个
应用程序,主要是通过构造函数参数。
例如,参数 region 将所有操作限制在一个地理区域内。此参数是在运行时从用户输入中收集的,因此在组合根中是未知的。

我应该如何创建始终仅限于在一个地区工作的类(class)?

我知道我可以使用工厂模式。在这种情况下,我需要将 DIC 传递给工厂,这(据我所知)是一种反模式。

最佳答案

使用 DI 时,工厂模式当然不是反模式,即使您会看到工厂的数量 decrease when you apply DI correctly .

仍然在您的情况下,工厂可能不是最好的方法。通常你应该 prevent letting the object graph depend on runtime data并且您应该将对该请求特定数据的需求与您的服务组合分开。

在您的情况下,可能很容易拥有某种 IRegionContextIRegionManager允许获取当前请求的区域的抽象。这个IRegionContext本身是一个服务,但包含一个方法,可以在构建对象图后由应用程序调用:

public interface IRegionContext
{
Region CurrentRegion { get; }
}

应用程序类型可以取决于 IRegionContext在您的 Web 应用程序的组合根目录中,您可以有一个特殊的 AspNetRegionContext允许根据当前请求检索区域的实现。

关于dependency-injection - 依赖注入(inject) : How to construct a class that depends on runtime parameters?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24305556/

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