所以,这是我第一次处理DI,如果我误解了整个DI,请纠正我。
这些是我的一些项目:
我的目的是让每个项目都有自己的DI容器(Unity DI说)。我不确定每个项目都有自己的DI容器。
我已经阅读了一些文章,表明它无法完成(不确定我是否正确解读)但我不确定为什么?
如果不能完成,任何人都可以解释它,我如何实现这一点,我不想在应用层DI中的数据层中注册类。
如果每个项目可以拥有自己的DI,那么当IMapper作为实例注册时,它会覆盖其他层的IMapper吗?
答案 0 :(得分:3)
我的目的是让每个项目都有自己的DI容器(Unity DI说)。我不确定每个项目都有自己的DI容器。
正如here所解释的那样,你应该编写所有对象图:
尽可能接近应用程序的入口点。
此地点称为撰写根:
组合根是应用程序中一个(最好)唯一的位置,模块一起组成。
换句话说,您应该使用DI容器并配置应用程序依赖项的唯一位置是启动项目。所有其他项目都应该忽略容器,并且应该纯粹应用构造函数注入。
我已阅读了一些文章,表明无法完成
可以做到,但你不应该这样做。
如果每个项目都有自己的DI,那么当IMapper作为实例注册时,它会覆盖其他层的IMapper吗?
如果应用合成根模式,此问题就会消失。在组合根中,您可以完全控制哪个组件获得哪个依赖项。
专业提示:阅读this book。