我从DI和IoC开始,所以我的问题可能不是最好定义的。
我阅读了很多例子,并阅读了这本书Dependency Injection in .NET @MarkSeemann现在。
但我可能错过了一些观点。我没有带任何特殊的框架示例来解决问题。
问题1:
让我们说,我有WinForms应用程序
Gui1 - > (从配置获取服务ip,传递给bl)
Gui2 - > (从用户获取服务ip,传递给bl)
- > 业务层 - > 通信DALayer(接收服务IP地址) - > ... - > WCF服务......
每个组件 - 都是单独的.Net项目(GUI1,GUI2,BL,DAL,...)。
我想使用任何DI容器(例如Unity,Castle,...)。
在这种情况下,我需要在启动应用程序时初始化容器一次 - 它表示来自 GUI1 文件 program.cs 和来自 GUI2 文件 program.cs 。
但是 - 这是否意味着我应该将 BL和DAL 的引用添加到GUI1和GUI2项目中? 我的意思是,为了能够注册BL实例 - 我应该将它的类型提供给容器。要做到这一点 - 我应该能够从program.cs“看到”它的类型。
同样适用于DAL - 我希望我的BL从IoC容器中获取dal(构造函数注入?)。
向GUI添加BL引用是可以的,但是将DAL引用(可能还有其他助手......)添加到GUI项目是不行的。
我读到了Windsor的安装程序 - 但是同样的问题 - 我可以为DAL准备安装程序,为BL安装程序 - 但是所有的应该都可以在主安装期间从GUI项目执行。
我不知道,我可以将类型指定为字符串,例如“MyNamespace.MyClass”,但我认为这不是最佳解决方案。
我在这里缺少什么?
谢谢!