在我的ASP.NET MVC 4 c#项目中,我有3层。数据,业务和Web。我遵循存储库模式和服务。
我使用Autofac进行依赖注入。我所做的是在global.asax中注册组件。 通过这种方式,我必须引用我实现存储库的数据层。
我认为这违反了规则,因为我的网络项目有数据层的引用。
我已经阅读了一些关于解决这个问题的文章,并找到了Autofac模块。但是,我没有找到一种方法来实现它,也没有引用数据层。
有没有办法在不引用数据层的情况下注册组件?
谢谢。
答案 0 :(得分:1)
在我看来,你所拥有的情况正是你所寻找的。
您不需要这样的参考结构:LibA => LibB => LibC => ...
最后,你想要的是一个DLL /项目/组件将所有项目绑定在一起(称为组合根)并且组件之间没有依赖关系 这样,您的域图层就不依赖于任何其他内容。
可以从表示层引用您的数据层(如果这是您的组合根目录)。
如果您需要为应用程序的不同部分使用不同的组合根,则模块非常有用。一个假设的例子是管理区域和客户区域。如果它们的依赖关系不同,您可能希望为每个区域使用组合根,尽管它们位于同一个项目中。