繁体   English   中英

将IoC容器引入旧版代码

[英]Introducing an IoC Container to Legacy Code

我正在编写供公司内部使用的新.NET库,该库将通过依赖关系注入使用IoC。 当然,如果我们使用IoC容器来解析实例,则该库将更易于使用。

但是,将要对该库进行调用的代码当前未使用任何形式的依赖注入,并且重构遗留代码以使用DI超出了我的项目范围。 那么,在此旧代码中开始使用Container从我的新库中获取实例的最佳方法是什么?

如果可能的话,我想避免乱扔所说的旧代码,而硬引用到我选择的任何IoC容器。 由于我是DI的新手,因此在某种程度上,我们很可能会改变主意。

如果我将容器包装在CodePlex上的CommonServiceLocator库之类的容器中,那是一种合理的方法吗?

其他人做了什么?

您可以使用外观/代理模式从旧容器中隐藏DI容器。 本质上,您是将遗留物硬编码到实现的自定义类上,该类将了解DI容器。 现在,如果您修改DI,则更新的是外墙,而不是旧的代码。

我没有对Common Service Locator进行过很多研究,但这可能是一个很好的解决方案。 您可能希望将外观与CSL绑定在一起,这将使DI概念完全隐藏在旧代码中。

据我了解,您想从旧代码中调用启用了DI的代码。

最好的选择是保持新库DI友好,但与容器无关

这样做,您可以提供遗留代码可以使用的简单Facade。 无需使用旧版应用程序即可使用任何DI容器,也无需使用通用服务定位器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM