假设我有以下 4 个 .net 程序集:
- Winform 用户界面
- 商业逻辑
- SQL Server 数据访问(实现 IRepository)
- 通用接口(IRepository 等的定义)
我的业务逻辑 (2) 通过使用构造函数依赖注入的 IRepository(在 4 中定义)调用数据访问层 (3)。但是,当我创建一个业务对象时,我需要传入一个实际的存储库。为此,我的业务逻辑层中有一个单例类返回当前正在使用的实现 IRepository 的具体对象。我得出的结论是,这是一件坏事,因为我的业务逻辑层现在必须引用 3 和 4。
我想我需要一个 IoC 容器,但问题是我在哪里创建/放置它,因为我似乎在哪里创建它(1 - UI)?还需要持有对 3(SQL Server 数据访问)的引用。我不只是在解决问题,而不是实现实际的脱钩吗?
我是否在 UI 中创建 IoC 容器。或者通过另一个新程序集公开它。
(我正在使用 C#、.net 3.5 和 AutoFac)
谢谢。