可能重复:
DAL -> BLL <- GUI + composition root. How to setup DI-bindings?
我正在定义一个新的解决方案,我已经创建了一些项目:
每个项目都有我的域名的参考。
在我在Internet上看到的每个例子中,依赖注入(ninject)都是在WebUI中定义的,但我不能这样做,因为它需要我为我的DataAccessLayer添加一个引用。
如果我将绑定关联移动到BusinessLayer,那么我的WebUI将不会与数据库无关,因为绑定在我的BusinessLayer中是硬编码的。
请提出您的意见(即使在架构中),以及为什么我有决策实施问题?
谢谢大家
答案 0 :(得分:2)
您通常会在应用程序项目中配置容器。在您的情况下,ASP.NET MVC应用程序。此配置需要引用解决方案中的所有程序集。这通常不是问题。只是不要使用Web应用程序其余部分的DAL库。
如果这对您来说是个问题,请创建一个引用所有项目并配置容器的特殊Bootstrapper项目。然后从Application_Start事件中调用该项目。
答案 1 :(得分:0)
如果您在Web应用程序中引用了数据访问层,那就没关系了,只要您不在代码中实际引用它们(除了在ninject配置中)。原因是Ninject是在代码中配置的,因此要更改您的配置,您必须更改代码。
如果您想要一个纯粹基于文件的配置方法,那么您需要使用不同的Container,或者基于Ninject开发基于文件的配置。
只要您的CODE与数据库无关,您只需更改您的ninject代码并修改引用即可,您不必更改应用程序。