依赖注入容器--AutoFac的使用

注册的Startup类型的ConfigureServices允许返回一个ServiceProvider,这个特性的重要意义在于它使我们可以实现与第三方DI框架(比如Unity、Castle、Ninject和AutoFac等)的集成,这里我们用AutoFac示范

.NetCore默认的DI框架,接口需要一个个的注册

    public void ConfigureServices(IServiceCollection services) {
        services.AddMvc();
        services.AddTransient();//DI依赖注入的实现 .net core自带的框架
    }

Autofac实现批量注册服务-名称注入

NutGet安装Autofac和Autofac.Extension.DependencyInjection
ConfigureServices的void替换成有返回值的ServiceProvider

public IServiceProvider ConfigureServices(IServiceCollection services)
    {
        //注册Autofac组件 实例化容器
        var builder = new ContainerBuilder();
        //批量注册程序集   
        builder.RegisterAssemblyTypes(System.Reflection.Assembly.Load("IService"),//实现类所在的程序集名称
                                      System.Reflection.Assembly.Load("Service"))
                  .Where(t => t.Name.EndsWith("Service"))//带筛选
                  .AsImplementedInterfaces()//是以接口方式进行注入,注入这些类的所有的公共接口作为服务
                  .InstancePerLifetimeScope();//在一个生命周期中,每一次的依赖组件或调用(Resolve())创建一个单一的共享的实例,且每一个不同的生命周期域,实例是不同的

        builder.Populate(services);
        this.ApplicationContainer = builder.Build();
        //第三方IOC接管 core内置DI容器
        return new AutofacServiceProvider(this.ApplicationContainer);

 }

你可能感兴趣的:(依赖注入容器--AutoFac的使用)