2012-11-26 78 views
0

我正在构建具有表示层(PL),业务逻辑层(BLL)和数据访问层(DAL)的3层体系结构。3层体系结构中的IOC

我要实现它在3个不同的实体项目如下:

  • PL项目 - > BLL的DLL参考
  • BLL项目 - > DAL的参考
  • DLL的DAL项目 - >无参考

通过定义接口和通过构造函数注入使用DI在BLL和DAL之间应用IOC的概念将改变架构如下

  • PL项目 - > BLL的Dll的参考,参考DAL的DLL(对于具体类型的DI到BLL对象的构造函数)
  • BLL工程 - > DAL的参考
  • DAL项目 - >没有参考

理想情况下,我想实现以下目标,同时保持我与IOC的IOC。

  • PL项目 - > BLL的Dll
  • BLL项目的参考 - DAL的Dll
  • DAL项目>参考 - >无参考

这怎么可能?

注意:我不想使用IOC容器。

+1

我不明白。 DI和IoC对你的依赖不做任何事情。他们只是注入他们。那么你真正的问题是什么? – jgauffin

+0

我只是不想在我的PL中参考DAL – sjj

+0

为什么你这样做呢? '具体类型的DI到BLL对象的构造函数?'没有意义?也许你的问题的一个真实例子?你如何解决它没有DI? – jgauffin

回答

0

您可以将DI的引导分为两部分。第一个在PL项目中完成的工作将为在BL中实现接口并由PL使用的对象设置IOC配置。在BL项目中编写的第二部分将为在DAL中实现接口并由BL使用的对象设置IOC配置。 然后您需要让PL项目设置引导程序调用BL项目的引导程序以及执行它自己的配置。如果你这样做,你不必在PL中引用DAL。

+0

谢谢Ryan.can你解释一个例子或外部链接请。 – sjj

+0

感谢Ryan。你用一个例子或外部链接解释,请注意我不想使用IOC容器。 – sjj

+0

@ user1841186我的答案正在假设您正在使用IOC容器。我会建议您使用IOC容器,而不是为此编写自己的代码。 –