已关闭 。这个问题是基于观点的。它当前不接受答案。
想改善这个问题吗? 更新问题,以便通过编辑此帖子以事实和引用的形式回答。
2年前关闭。
我的应用程序中将包含以下组件
我希望使用温莎城堡(Castle Windsor)作为IoC将各层粘合在一起,但是我对胶粘剂的设计还不确定。
我的问题是谁应该负责将对象注册到温莎?我有两个主意;
我正在寻找一些不同途径的想法和优点/缺点。
通常,应尽可能晚地组装应用程序中的所有组件,因为这样可以确保最大程度的模块化,并且模块应尽可能松散地耦合。
实际上,这意味着您应该在应用程序的根目录下配置容器。
容器只是将模块组合成可运行的应用程序的引擎。原则上,您可以手动编写代码(这称为“ 穷人的DI” ),但是使用像Windsor这样的DI容器要容易得多。
理想情况下,这样的“ 合成根” 将是应用程序根目录中的唯一代码,从而使应用程序成为所谓的“ 谦虚可执行文件” (来自出色的xUnit测试模式),它本身不需要单元测试。
您的测试根本不需要容器,因为您的对象和模块应该是可组合的,并且可以从单元测试中直接为它们提供 Test Double 。最好将所有模块设计为与容器无关。
同样在Windsor中,您应该将组件注册逻辑封装在安装程序中(类型实现IWindsorInstaller),有关详细信息,请参阅文档。
IWindsorInstaller