Cra*_*eer 10 .net c# design-patterns dependency-injection
我正在编写一个新的.NET库供我公司内部使用,它将通过依赖注入使用IoC.当然,如果我们使用IoC容器来解析实例,这个库将更容易使用.
但是,将调用此库的代码当前不使用任何类型的依赖注入,并且重构遗留代码以使用DI超出了我的项目的范围.那么,在这个遗留代码中开始使用Container从我的新库中获取实例的最佳方法是什么?
如果可能的话,我想避免乱丢遗留代码,硬编辑我选择的任何IoC容器.由于我对DI比较陌生,所以我们有可能会改变我们想要在某个时刻使用哪个Container的想法.
如果我将我的容器包装在CodePlex上的CommonServiceLocator库之类的东西上,这是一种合理的方法吗?
其他人做了什么?
您可以使用外观/代理模式从旧容器中隐藏 DI 容器。您本质上是将您的遗产硬连接到您实现的自定义类,该类将了解 DI 容器。现在,如果您修改 DI,您将更新您的外观,而不是您的遗留代码。
我没有对公共服务定位器进行大量研究,但它的前提可能是一个很好的解决方案。您可能希望将外观与 CSL 联系起来,这将从您的遗留代码中完全隐藏 DI 概念。