每个类库的依赖注入容器

时间:2017-03-24 07:46:11

标签: c# dependency-injection automapper unity-container

所以,这是我第一次处理DI,如果我误解了整个DI,请纠正我。

这些是我的一些项目:

  1. Web应用程序/ Web API项目 - 取决于服务类+注入Automapper(仅适用于当前项目的配置)
  2. 服务(类库) - 取决于数据类+注入Automapper(仅适用于当前项目的配置)
  3. 数据(类库)
  4. 我的目的是让每个项目都有自己的DI容器(Unity DI说)。我不确定每个项目都有自己的DI容器。

    我已经阅读了一些文章,表明它无法完成(不确定我是否正确解读)但我不确定为什么?

    如果不能完成,任何人都可以解释它,我如何实现这一点,我不想在应用层DI中的数据层中注册类。

    如果每个项目可以拥有自己的DI,那么当IMapper作为实例注册时,它会覆盖其他层的IMapper吗?

1 个答案:

答案 0 :(得分:3)

  

我的目的是让每个项目都有自己的DI容器(Unity DI说)。我不确定每个项目都有自己的DI容器。

正如here所解释的那样,你应该编写所有对象图:

  

尽可能接近应用程序的入口点。

此地点称为撰写根

  

组合根是应用程序中一个(最好)唯一的位置,模块一起组成。

换句话说,您应该使用DI容器并配置应用程序依赖项的唯一位置是启动项目。所有其他项目都应该忽略容器,并且应该纯粹应用构造函数注入

  

我已阅读了一些文章,表明无法完成

可以做到,但你不应该这样做。

  

如果每个项目都有自己的DI,那么当IMapper作为实例注册时,它会覆盖其他层的IMapper吗?

如果应用合成根模式,此问题就会消失。在组合根中,您可以完全控制哪个组件获得哪个依赖项。

专业提示:阅读this book