我理解Dependency Injection的基本概念。而不是拥有大量的全局状态,而是将所需的内容传递给各种对象的构造函数。
但我不明白这个概念如何应用于框架?依赖注入框架为您做什么以及何时使用它?
答案 0 :(得分:5)
框架根据某种配置(无论是代码,XML文件等)为您提供所有内容。
基本上是管道。
许多DI框架还包括面向方面编程,对象生命周期管理等,但DI的基础是让您的应用程序启动并运行彼此交谈的对象。
另一种表达方式:DI框架是一些代码,它调用构造函数并告诉整个事情在完成时运行:)
答案 1 :(得分:1)
我使用它的主要原因是它允许我插入对象的新实现而无需重新编译。我只需更改配置文件,我的对象就可以正确连接在一起。
答案 2 :(得分:0)
了解它们如何有用的最佳方法是尝试一些。我一直想给Spring.NET一个尝试,它看起来像是一个很好的实现。
答案 3 :(得分:0)
我真正喜欢AOP的一件事是在开发版和生产版之间移动非常容易。您可以创建非常详细的日志记录,然后基本上翻转一个xml开关,它就消失了。
答案 4 :(得分:0)
使用DI / IOC的主要优点之一是减少不同类之间的耦合。
当您使用该方法时,您必须配置对象的层次结构,这表示您从其代码中获取的依赖关系。这可以变成很多代码。即使您使用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)))
);