先说下什么是IOC容器(Inversion of Control:控制反转)
传统应用程序都是由我们在类内部主动创建依赖对象,从而导致类与类之间高耦合,难于测试,
IOC是把创建和查找依赖对象的控制权交给了容器,由容器进行注入组合对象,指导我们如何设计出松耦合的程序。
这种应用本身不负责依赖对象的创建和维护,依赖对象的创建和维护是由外部容器负责的称为控制反转(IOC)。
using Autofac;
namespace AutofacTest
{
public class Program
{
//Autofac是什么?
//Autofac是一种IOC容器,那么什么是IOC容器呢?
//两个概念IOC(Inversion of Control,控制反转)和 DI(Dependency Injection,依赖注入):
// IOC:调用者不再创建(不自己new)被调用者的实例,而是交给容器去创建(AutoFac就充当这里的容器),这就是控制反转。
// DI: 容器创建好的实例再注入调用者的过程,就是依赖注入(比如:属性注入、构造函数注入等)。
// IOC就是一种软件设计思想,DI是这种软件设计思想的一个实现。
// IOC的一个重点是在系统运行中,动态的向某个对象提供它所需要的其他对象。这一点是通过DI(Dependency Injection,依赖注入)来实现的。
// 控制反转背后的核心思想是, 不再将类绑定在应用里, 而是反过来让类自己去new。
// 传统应用程序都是由我们在类内部主动创建依赖对象,从而导致类与类之间高耦合,难于测试
// IOC是把创建和查找依赖对象的控制权交给了容器,由容器进行注入组合对象,指导我们如何设计出松耦合的程序。
// 这种应用本身不负责依赖对象的创建和维护,依赖对象的创建和维护是由外部容器负责的称为控制反转(IOC)
private static IContainer container { get; set; }
//https://github.com/autofac/Autofac
static void Main(string[] args)
{
//1.生成容器
var builder = new ContainerBuilder();
//2.注册组件(反射注册 n多注册方式中的一种)
//https://www.processon.com/view/link/6072ed8863768912ae50b483#outline
builder.RegisterType