我从 DI 和 IoC 开始,所以我的问题可能不是最好的定义。
我阅读了很多示例,以及 现在阅读 @MarkSeemann的 .NET 中的依赖注入一书。
但我可能错过了一些要点。我没有带来任何特殊的框架示例来明确问题。
问题一:
假设,我有 WinForms 应用程序
Gui1 --> (从配置中获取服务ip,传给bl)
Gui2 --> (从用户那里获取服务ip,传给bl)
--> 业务层 --> 通信 DALayer(接收服务 Ip 地址)--> ... --> WCF Services ...
每个组件 - 都是单独的 .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(构造函数注入?)。
将 BL 引用添加到 GUI 时可以,但将 DAL 引用(可能还有其他助手,...)添加到 GUI 项目是不行的。
我读到了 Windsor 的安装程序——但这是同一个问题——我可以为 DAL 准备安装程序,为 BL 准备安装程序——但所有的 ms 都应该能够在主安装期间从 GUI 项目执行。
我不明白,我可以将类型指定为字符串,例如“MyNamespace.MyClass”,但我认为这不是最好的解决方案。
我在这里想念什么?
谢谢!