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

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

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

    public void ConfigureServices(IServiceCollection services) {
        services.AddMvc();
        services.AddTransient<IServiceA, ServiceA>();//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);

 }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容