依赖注入框架为您做什么?

时间:2009-03-19 20:34:52

标签: dependency-injection frameworks

我理解Dependency Injection的基本概念。而不是拥有大量的全局状态,而是将所需的内容传递给各种对象的构造函数。

但我不明白这个概念如何应用于框架?依赖注入框架为您做什么以及何时使用它?

5 个答案:

答案 0 :(得分:5)

框架根据某种配置(无论是代码,XML文件等)为您提供所有内容。

基本上是管道。

许多DI框架还包括面向方面编程,对象生命周期管理等,但DI的基础是让您的应用程序启动并运行彼此交谈的对象。

另一种表达方式:DI框架是一些代码,它调用构造函数并告诉整个事情在完成时运行:)

答案 1 :(得分:1)

我使用它的主要原因是它允许我插入对象的新实现而无需重新编译。我只需更改配置文件,我的对象就可以正确连接在一起。

答案 2 :(得分:0)

了解它们如何有用的最佳方法是尝试一些。我一直想给Spring.NET一个尝试,它看起来像是一个很好的实现。

答案 3 :(得分:0)

我真正喜欢AOP的一件事是在开发版和生产版之间移动非常容易。您可以创建非常详细的日志记录,然后基本上翻转一个xml开关,它就消失了。

答案 4 :(得分:0)

使用DI / IOC的主要优点之一是减少不同类之间的耦合。

当您使用该方法时,您必须配置对象的层次结构,这表示您从其代码中获取的依赖关系。这可以变成很多代码。即使您使用DI框架的代码部分,它也可以通过让您以更具表现力的方式进行配置来大大减少配置量:

  • 每当需要ILogger时,请使用a FileLogger。
  • 你可以更进一步 惯例,无论什么时候 我[姓名]要求控制人员 用[名称]控制器替换它。
  • 你可以让它管理单身人士 对象为你。所以你的代码是 与任何其他相同 依赖,但DI确保 你得到了同样的实例 时间

我使用的几个结构图配置:

    ForRequestedType<ILogger>().TheDefaultIsConcreteType<NLogLogger>();
    //the following injects any property that has a type 
    //that implements IController. (overcomes a regular asp.net limitation with DI)
    SetAllProperties(
         p => p.TypeMatches(t => t.IsConcreteAndAssignableTo(typeof(IController)))
    );