1

我对 DI 和 IoC 容器很陌生。我知道 IoC 容器应该只存在于项目的组合根目录中。而且我知道解决方案中的所有其他项目都不应该引用 IoC 容器。

到目前为止,一切都很好....

然后我想,如何在引导后在运行时创建新对象。

我找到了这两篇文章:

http://blog.ploeh.dk/2012/03/15/ImplementinganAbstractFactory/

http://netpl.blogspot.de/2012/12/di-factories-and-composition-root.html

如果我是对的,我必须在引导之后为我想在运行时实例化的每个对象创建一个工厂。这些工厂注入了 IoC 容器。

因此,工厂的项目必须引用 IoC-Library(因为构造函数注入)。

最后我迷茫了!

这些工厂住在哪里(在哪个项目中)?我想知道,因为所有其他项目(除了组合根项目)都不应该引用 IoC 库。

在哪一点我错了?

4

1 回答 1

1

这些工厂住在哪里(在哪个项目中)?我想知道,因为所有其他项目(除了组合根项目)都不应该引用 IoC 库。

如果工厂实现需要引用容器,则必须在Composition Root中定义。然而,工厂抽象可以在需要的层中定义。

于 2013-09-20T16:57:24.220 回答