Autofac容器快速入门


Autofac容器快速入门

Autofac 是一款.NET IoC 容器它管理类之间的依赖关系, 从而使应用在规模及复杂性增长的情况下依然可以轻易地修改它的实现方式是将常规的.net类当做 组件处理

Autofac容器介绍

实现Autofac容器的步骤:

  1. 安装 NuGet 程序包: Autofac
  2. 创建一个 ContainerBuiler
  3. 注册接口和实现关系
  4. 通过 ContainerBuilerBuild方法,得到IContainer 容器
  5. 通过 IContainer容器获取实例
  6. 使用服务

实践

项目结构

Step1:新建一个WebApi应用程序。

Step2:新建一个接口,代码:

public interface ITestServiceA

    {

        void Show();

}

Step3: 实现类,代码:

public class TestServiceA : ITestServiceA

    {

        public TestServiceA()

        {

            Console.WriteLine($"{this.GetType().Name} 被构造了...");

        }

        public void Show()

        {

            Console.WriteLine($"This is a {this.GetType().Name} Instance...");

        }

 }

Step4: 添加Autofac依赖,代码:

    

Step5: 修改StartupConfigureServices方法,代码:

public void ConfigureServices(IServiceCollection services)

        {

            var builder = new ContainerBuilder();

            builder.RegisterType().As();

            var container = builder.Build();

            // 获取服务实例

            var testService = container.Resolve();

            testService.Show();

            services.AddControllers();

        }

Step6: 调试运行:

总结

ConfigureServices创建一个 ContainerBuiler,然后注册接口和实现关系,再通过 ContainerBuilerBuild方法得到IContainer容器,最后就可以通过 IContainer容器获取实例了。

注意的是在注册接口和实现关系时,接口和实现位置不能错。

1.依赖注入的目的是为了解耦。

2.不依赖于具体类,而依赖抽象类或者接口,这叫依赖倒置。

3.控制反转即IoC (Inversion of Control),它把传统上由程序代码直接操控的对象的调用权交给容器,通过容器来实现对象组件的装配和管理。所谓的“控制反转”概念就是对组件对象控制权的转移,从程序代码本身转移到了外部容器。