我是 Unity 的新手,但这个问题对 IoC 来说更通用,而且我对整体实现 IoC 还是很陌生。我有这个项目结构的VS2010解决方案(稍微简化):
- 业务对象 - 文件夹
- DomainModel (Class Lib prj.) – Entity Framework 2 POCO 实体
- 数据层 - 文件夹
- DataAccess (Class Lib prj.) – EF2 EDMX
- Repository (Class Lib prj.) – IRepository 接口和存储库具体实现
- 表示层 - 文件夹
- WebUI – MVC 项目
- 服务层
- Service (Class Lib prj.) – IService 接口和服务(外观模式)具体实现
所有项目都引用 DomainModel 项目。
存储库引用 DataAccess 项目。
服务层引用存储库项目。
WebUI 引用服务项目和 Unity 程序集。
我已将 Unity 配置为在 WebUI 中正确注入我的所有服务类型(通过自定义 UnityControllerFactory.cs 的 global.asax)。但是如何在服务层配置 Unity 以注入存储库对象?
我不想从 WebUI 中引用 Repository 项目,以确保在开发过程中没有任何快捷方式并绕过服务层。
我有几个想法(不确定它是否会解决它):
- 将 IRepository 接口移动到 DomainModel 并为 IRepository 添加 Unity.RegisterType<> 调用
- 在 Web.config 中设置 Unity 配置
任何方向都将不胜感激,特别是如何为服务层/存储库配置 Unity,以及关于项目的一般情况。