限制依赖注入项目层

时间:2014-03-12 23:33:20

标签: c# asp.net dependency-injection ninject autofac

我有一个引用服务层类库的ASP.NET Web项目。我正在使用我在Web层设置的依赖注入。我想在两个项目中利用依赖注入。但我不希望Web层能够从服务层注入某些实现。

一个例子,我在服务层使用实体框架将实体存储库注入服务类,但我不希望web层有权注入这些实体存储库。

有没有办法实现这个目标?

我正在使用Ninject和AutoFac,所以使用其中任何一个的例子都可以。

1 个答案:

答案 0 :(得分:0)

为此,您可以明确使用两个 Composition Roots 。像往常一样为Web应用程序设置容器。

然后在您的服务层中,使用一些代码仅执行一次容器初始化(引导程序)。在服务层的每个入口点中,然后使用容器(服务定位器)向层请求内部对象。通过这种方式,外部项目无法干扰您的服务层绑定。

另一种方式(使用Ninject)是使用模块,尽管它不会保护外部项目不替换绑定。但是你至少可以实现关注点的分离,并在它们被使用的地方附近声明绑定。注入Web层的内容在 WebModule ,服务层服务模块中声明,等等。