我是DI和IoC容器的新手。据我所知,IoC容器应该只在项目的组合根处生活。我知道解决方案中的所有其他项目都不应该引用IoC容器。
到目前为止一直很好......
然后我想到了如何在bootstrap之后在运行时创建新对象。
我发现了这两篇文章:
http://blog.ploeh.dk/2012/03/15/ImplementinganAbstractFactory/
http://netpl.blogspot.de/2012/12/di-factories-and-composition-root.html
如果我是对的,我必须在引导程序之后为运行时想要实例化的每个对象创建一个工厂。这些工厂注入了IoC Container。
因此工厂的项目必须引用IoC-Library(因为构造函数注入)。
最后我很困惑!
这些工厂住在哪里(在哪个项目中)?我想知道,因为所有其他项目(在组合根项目旁边)不应该引用IoC-Library。
那时我错了?
答案 0 :(得分:0)
这些工厂住在哪里(在哪个项目中)?我想知道,因为所有 其他项目(在组合根项目旁边)不应该有 参考IoC-Library。
如果工厂实现需要引用容器,则必须在组合根中定义它。然而,工厂界面本身可以在需要它的层中定义。