我理解依赖注入的基本概念。与其有很多全局状态,你可以将需要的内容传递给各种对象的构造函数。
但是我不明白这个概念如何应用到框架中?依赖注入框架为您做了什么,何时应该使用它?
但是我不明白这个概念如何应用到框架中?依赖注入框架为您做了什么,何时应该使用它?
该框架会根据某种配置(无论是代码、XML文件等)自动连接所有组件。
它基本上就像管道一样。
许多DI框架还包括面向方面的编程、对象生命周期管理等功能,但DI的基础是让您的应用程序运行并使对象相互交流。
换句话说,DI框架是调用构造函数并在完成时告诉整个系统运行的那部分代码 :)
使用DI / IOC的主要优点之一是减少不同类之间的耦合。
当您使用该方法时,必须配置对象层次结构,以表达您从其代码中删除的依赖项。这可能会变成大量的代码。即使您使用DI框架的代码部分,也可以通过让您以更具表现力的方式进行配置来大大减少配置量:
我使用的一些StructureMap配置:
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)))
);
关于AOP,我真正喜欢的一件事情是它非常容易在开发和生产版本之间切换。您可以创建非常详细的日志记录,然后基本上翻转一个XML开关,它就消失了。