某些项目有一些反转控制组件。
这些是在不同概念领域工作的组件 - 业务,图形用户界面,全球化,存储...... - 。
哪个是您的解决方案?
我会感谢利弊。
感谢您提前付出的努力!
答案 0 :(得分:1)
为了保持一致性,我建议您对所有概念区域使用容器的相同实现(AutoFac,Unity,Spring whaterver)。
如果每个概念区域保留一个容器并不困难,那么就这样做。对于相同的依赖项(例如IEmailService),您将需要针对差异概念区域(RemoteEmailService,LocalEmailService)的不同实现来避免问题。一个缺点是,如果您有共享组件,则需要跟踪它们并在每个容器中为每个区域注册它们。
如果您的IOC实现支持父子容器(AutoFac),则可以在父容器中使用共享组件,并在每个子容器中具有特定于组件的组件。
如果您的IOC实现难以为每个区域使用单独的容器,请不要对抗它,更改它或使用一个全局容器,但在注册组件时要小心。
无论如何,请确保您的代码与IOC实现无关。这样你就可以从一个“一个容器开始”开始,如果需要,可以转到“每个区域的容器”。