我试图在具有以下架构的项目中使用Simple Injector:
当涉及向容器注册类和接口时,我面临一个问题,Simple Injector需要我用其接口注册存储库(因为我的服务层中的类接受其构造函数中的存储库)
所以,实际上,Simple Injector强迫我在我的MVC层中添加对我的DAL层的引用,我真的很想避免。
我的问题是,是否有可能/正确地创建一个只包含Simple Injector的外部项目,这个项目将引用所有其他项目,这样我就可以注册我想要的东西并仍然保留我的项目抽象?
还是有其他简单的方法来解决这个问题?
答案 0 :(得分:2)
DI容器(例如您的Simple Injector)只能从Composition Root中引用。所有其他模块都不应该引用容器。
您可以在此处阅读有关组合根的更多信息:
http://blog.ploeh.dk/2011/07/28/CompositionRoot/
什么是DI容器应该完全使用注册解析发布模式从组合根中应用。 关于这种模式的更多信息:
http://blog.ploeh.dk/2010/09/29/TheRegisterResolveReleasepattern/