dependency injection容器? 它有什么作用?

我一直在阅读DI,这似乎是一个简单的概念。 我没有得到的是容器。 让我们说一下,我想创建自己的容器。 像“detect”这样的动词被使用了,我不知道容器如何“检测”创建了一个新的依赖对象并且知道注入它的依赖项。 对我而言,容器似乎是一个美化的工厂。

任何人都可以解释一个容器是如何实际实现的,或者可能是指向一个资源?

谢谢!

这取自Windsor文档

控制反转

控制反转是框架使用的一种原则,它允许开发人员扩展框架或使用它来创建应用程序。 基本思想是框架知道程序员的对象并对它们进行调用。

这与使用API​​相反,其中开发人员的代码对API代码进行调用。 因此,框架反转了控件:它不是负责的开发人员代码,而是框架基于某些刺激进行调用。

你可能已经处于这种原则下你已经发展的情况,即使你没有意识到这一点。

控制容器的反转

控制容器的反转使用上述原则(简言之)管理类。 也就是说,它们的创建,破坏,生命周期,配置和依赖性。 这样,类不需要获取和配置它们所依赖的类。 这大大减少了系统中的耦合,因此简化了重用和可测试性。

人们认为“控制倒置”是“控制容器倒置”的同义词,造成了一些混乱。 如上所述,控制倒置是一个更广泛的原则。

通常人们认为这完全是关于“注入”,并且广播说这是IoC容器的主要目的。 事实上,“注射”是一种结果,一种解耦的手段,而不是主要目的。

你可能想读这本书dependency injection在.NET …我已经阅读过了,我强烈建议你阅读它。 它首先给出了关于DI的一个很好的和有见地的解释然后显示关于DI的真实世界应用的代码和模式。

从这本书中,用太少的话来说……

"DI container is the technology used to support the DI technique" Page 55