我一直在阅读DI,这似乎是一个简单的概念。我没有得到的是容器。让我们说一下,我想创建自己的容器。像“detect”这样的动词被使用,我不知道容器如何“检测”创建了一个新的依赖对象并且知道注入它的依赖关系。对我而言,容器似乎是一个美化的工厂。
任何人都可以解释容器是如何实际实现的,还是可以指向一个资源?
谢谢!
答案 0 :(得分:14)
控制倒置
控制反转是框架使用的一种原则 允许开发人员使用扩展框架或创建应用程序 它。基本思想是框架知道程序员的意思 对象并对它们进行调用。
这与开发人员代码所使用的API相反 对API代码的调用。因此,框架颠倒了控制: 它不是开发人员代码,而是框架 根据一些刺激进行调用。
你可能已经遇到过你的情况 这个原则的亮点,即使你没有意识到这一点。
控制容器的反转
控制容器的反转使用上述原理 (简而言之)管理课程。也就是说,他们的创造,破坏, 生命周期,配置和依赖关系。这样的类没有 需要获取和配置他们依赖的类。这个 大大减少了系统中的耦合,因此, 简化了重用和可测试性。
人们认为“倒置”会产生一些混乱 of Control'是'反转控制容器'的同义词。如 说,控制倒置是一个更广泛的原则。
通常人们认为这完全是关于“注射”和广播 这是IoC容器的主要目的。事实上, “注射”是一个结果,一种解耦的手段,而不是主要的手段 目的
答案 1 :(得分:2)
你可能想读这本书Dependency Injection In .NET ......我已经读过了,我强烈建议你阅读它。它首先给出了一个关于DI的精彩而富有洞察力的解释,然后展示了关于DI的真实世界应用的代码和模式。
从这本书中,用太少的话来说......
"DI container is the technology used to support the DI technique" Page 55