Asp.net Core-依赖注入

使用Autofac替换Core中自带的DI

Autofac比Core中自带的DI功能强大的多,可以考虑替换

nuget安装Autofac 、 Autofac.Extensions.DependencyInjection

将Startup.cs中的ConfigureServices返回类型改为IServiceProvider,然后新起一个方法RegisterAutofac把创建容器的代码放到其中

public IServiceProvider ConfigureServices(IServiceCollection services)
        {
            services.Configure<CookiePolicyOptions>(options =>
            {
                options.CheckConsentNeeded = context => true;
                options.MinimumSameSitePolicy = SameSiteMode.None;
            });
            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
            return RegisterAutofac(services);//注册Autofac
        }
private IServiceProvider RegisterAutofac(IServiceCollection services)
        {
            //实例化Autofac容器
            var builder = new ContainerBuilder();
            //将Services中的服务填充到Autofac中
            builder.Populate(services);
            //新模块组件注册    
            //builder.RegisterModule<AutofacModuleRegister>();
            //创建容器
            var Container = builder.Build();
            //第三方IOC接管 core内置DI容器 
            return new AutofacServiceProvider(Container);
        }

哦了,替换完了。现在可以同时使用IServiceProvider、ILifetimeScope解析服务。

未完待续...

猜你喜欢

转载自www.cnblogs.com/fanfan-90/p/12144837.html