gpt4 book ai didi

dependencies - 注入(inject)你的 IoC 容器?

转载 作者:行者123 更新时间:2023-12-04 04:39:09 25 4
gpt4 key购买 nike

我整个上午都在研究,试图找到访问 IoC 的最佳实践。在将构造函数注入(inject)添加到您的类之后,您仍然需要从可能在您的应用程序对象图中很深的类中访问容器。在我的情况下,我在 WPF 中做 MVVM,我的一些 View 模型需要创建其他 View 模型,他们会使用容器来这样做。但问题是他们从哪里得到容器。注入(inject)并传递它是否有意义?可以让它成为一个可注入(inject)的单例吗?提供单例的工厂更合适吗?

有哪些选择和权衡?

更新

我发现 Matt Hinze 的这篇精彩演讲涵盖了很多 IoC 领域:http://www.drowningintechnicaldebt.com/ShawnWeisfeld/archive/2010/04/08/inversion-of-control-in-action-by-matt-hinze-north.aspx

看起来一个答案是使用扫描功能并将 IoC 配置存储在每个程序集的注册表中,然后在扫描期间添加这些注册表配置。

还有其他方法可以考虑吗?特别是考虑到 Matt 演示了使用 ServiceLocator 模式,而 Mark Seeman 称之为反模式。请注意,Matt 警告不要过度使用该模式,并且 Mark 对服务定位器的定义 (http://blog.ploeh.dk/Trackback.aspx?guid=5f05c086-295b-41e5-a50a-ed0cd77ac4bd) 似乎与 Matt 演示的不同.

最佳答案

正如您所说,您可以将工厂注入(inject)到您的顶级 ViewModel 中,而不是注入(inject)您的实际 ViewModel 实例,这会很困难。这有点像服务定位器模式,期望工厂(或服务提供商,或者你有什么)能够更具体地提供他们可以提供的服务。

关于dependencies - 注入(inject)你的 IoC 容器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8375959/

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