1

在我的 ASP.NET MVC 4 c# 项目中,我有 3 层。数据、业务和网络。我遵循存储库模式和服务。

我使用 Autofac 进行依赖注入。我所做的是在 global.asax 中注册组件。通过这种方式,我必须引用我实现存储库的数据层。

我认为这违反了规则,因为我的 web 项目有数据层的引用。

我已经阅读了一些关于解决这个问题的文章,并找到了 Autofac 模块。但是,如果不引用数据层,我也找不到实现它的方法。

有没有办法在不引用数据层的情况下注册组件?

谢谢你。

4

1 回答 1

1

在我看来,您所遇到的情况正是您要寻找的。

您不想要这样的参考结构:LibA => LibB => LibC => ...

最后,您想要的是一个 DLL/项目/组件将您的所有项目捆绑在一起(称为组合根)并且在您的组件之间没有依赖关系,这样您的域层就不会依赖于其他任何东西。

可以从表示层引用您的数据层(如果那是您的组合根所在的位置)。

如果您希望应用程序的不同部分具有不同的组合根,则模块很有用。一个假设的例子是管理区域和客户区域。如果它们的依赖关系足够不同,您可能希望为每个区域使用组合根,尽管它们位于同一个项目中。

于 2013-11-10T14:24:05.640 回答