【发布时间】:2013-07-25 05:01:46
【问题描述】:
我在一个解决方案中有 4 个项目
- DAL_Project
- BLL_项目
- Interface_Project
- WebApi_Project
Interface_Project有两个接口ICar_DAL和ICar_BLL
DAL_Project 有一个实现 ICar_DAL
的类 Car_DALBLL_Project 有一个实现 ICar_BLL 的类 Car_BLL,其构造函数接受 ICar_DAL
WebApi_Project 有一个 api 控制器 CarApiController,其构造函数接受 ICar_BLL
WebApi Controller 的构造函数的依赖解析是由 Unity.WebApi 在 Bootstrapper.cs 中使用 this 完成的:
container.RegisterType<ICar_BLL, Car_BLL>();
如果我的 Car_BLL 在其构造函数中进一步不需要 ICar_DAL,这将起作用。
为了让它工作,我可以做这样的事情:
container.RegisterType<ICar_BLL, Car_BLL>();
container.RegisterType<ICar_DAL, Car_DAL>();
但这意味着我需要在我的 WebApi_Project 中添加对 DAL_Project 的引用,这是我永远不想做的事情。 DAL_Project 只能由 BLL_Project
推荐我该如何解决这个问题?
【问题讨论】:
-
谢谢 steven ...您在该帖子中的回答和其他回答让我有了更多的学习内容,我将更详细地研究 Composition Root 的概念。我认为那是缺失的部分。再次感谢。
标签: dependency-injection asp.net-web-api tdd unity-container