我正在阅读Injection by Hand和Ninjection(以及Why use Ninject)。我遇到了两个混乱:
手工注射技术我已经熟悉,但我不熟悉Ninjection,因此不确定完整的程序是如何工作的。也许它有助于提供一个完整的程序,而不是像在该页面上那样,显示一个分解为程序的程序
我仍然不知道如何让事情变得更轻松。我想我错过了一些重要的事情。我可以看一下如果你创建一组注射,然后同时在两个大组之间切换,注入框架将如何有用(这对于模拟等很有用),但我认为它还有更多功能。比起那个来说。但我不确定是什么。或者我可能只需要更多的例子来解释为什么这一点很令人兴奋。
答案 0 :(得分:6)
在没有DI框架的情况下注入依赖项时,最终会在整个应用程序中使用箭头代码,告诉类如何构建它们的依赖项。
public Contact()
: this(new DataGateWay())
{
}
但是如果你使用像Ninject这样的东西,所有箭头代码都在一个地方,这样就可以更容易地改变使用它的所有类的依赖。
internal class ProductionModule : StandardModule
{
public override void Load()
{
Bind<IDataGateway>().To<DataGateWay>();
}
}
答案 1 :(得分:4)
我仍然不知道如何让事情变得更轻松。我想我错过了一些重要的事情。
如果我们只需要开发分立组件,每个组件都提供了我们可以轻松理解,重用和维护的独特功能,那不是很好吗?我们仅在组件上工作的地方。
阻止我们这样做的原因是,我们需要一些能够以某种方式将这些组件自动组合并管理到工作应用程序中的基础架构。我们可以使用基础设施 - 一个IOC框架。
因此,IOC框架不是关于管理依赖关系或测试或配置。相反,它是关于管理复杂性,使您只能工作和思考组件。
答案 2 :(得分:3)
它允许您通过模拟特定代码块所需的接口来轻松测试代码。它还允许您轻松交换功能,而不会破坏代码的其他部分。
这完全是关于凝聚力和耦合。
你可能不会看到小项目的好处,但是一旦你越过小,当你必须对系统进行更改时就会变得非常明显。当你使用DI时,这是轻而易举的事。
答案 3 :(得分:2)
我非常喜欢某些框架的自动装配方面...当你不必关心你的类型需要实例化的时候。
修改强> 我看了this article by Ayende @ Rahien。我非常支持他的观点。
答案 4 :(得分:1)
使用大多数框架的依赖注入可以在运行时配置,无需重新编译。
答案 5 :(得分:0)
如果你的代码到了代码中很少依赖的程度,那么依赖注入会变得非常有趣。一些依赖注入框架将允许您在配置文件中定义依赖项。如果您需要一个非常灵活的软件需要在不修改代码的情况下进行更改,这将非常有用。例如,工作流软件是此类解决方案的主要候选者。
答案 6 :(得分:0)
依赖注入对于Component Driven Development至关重要。后者允许以更加有效和可靠的方式构建非常复杂的应用程序。
此外,它允许将常见的横切关注点与其他代码完全分开(这会产生更多可重用且灵活的代码库)。
相关链接: