不理解在系统架构中创建IoC容器的位置
假设我有以下4个.net程序集:
我的业务逻辑(2)使用构造函数依赖注入通过IRepository(4中定义)调用数据访问层(3)。 但是,当我开始一个业务对象时,我需要传入一个实际的存储库。 我通过在业务逻辑层中的单例类返回实现IRepository的当前正在使用的具体对象来做到这一点。 我得出这样的结论:这是一件坏事,因为我的业务逻辑层现在必须引用3以及4。
我认为我需要一个IoC容器,但问题是我创建/放置它的地方似乎无论我在哪里创建(1-UI)? 还需要持有对3(SQL Server数据访问)的引用。 我是不是只是在解决问题而不是实现解耦?
我是否在UI中创建IoC容器? 或者通过另一个新程序集公开它。
(我使用C#,.net 3.5和AutoFac)
谢谢。
通常应在主机项目 (应用程序入口点)中创建IoC容器。 对于作为exe项目的Windows.Forms应用程序。
通常在简单的解决方案(10个项目下)中,只有主机项目应该引用IoC库。
PS:使用Autofac IoC构建.NET应用程序
注册组件时有几种可能性:
代码注册:
问题:你必须引用一切(你在这里)
问题:找出需要注册的东西
解:
注册配置文件:
顶级是一种方式(UI,就像Rinat说的)。
至于引用,最简单的方法是查看当前文件夹中的所有程序集,并使用一些约定来获取服务。 属性工作正常,每个程序集中的注册服务器类都可以正常工作,无论适合您。 提取所有内容的代码应该可以在单独的程序集中,除非你的IoC框架已经这样做了。
链接地址: http://www.djcxy.com/p/65661.html上一篇: Not understanding where to create IoC Containers in system architecture