码迷,mamicode.com
首页 > Web开发 > 详细

.Net Core 3.0依赖注入替换 Autofac

时间:2019-09-24 13:42:01      阅读:261      评论:0      收藏:0      [点我收藏+]

标签:containe   write   static   官方   bho   provider   efault   configure   简单   

今天早上,喜庆的更新VS2019,终于3.0正式版了呀~

有小伙伴问了一句Autofac怎么接入,因为Startup.ConfigureServices不能再把返回值改成IServiceProvider了,原来的替换依赖注入容器就不可行了,我随口说了一下Host上面.UseServiceProviderFactory

本以为就这么简单,他问我要个例子,自己折腾了一下,发现事情没有这么简单

.UseServiceProviderFactory<TContainer>要搭配Startup里面写一个ConfigureContainer(TContainer builder)

Autofac官方的IServiceCollection.AddAutofac内部实现其实是一个单例的容器注入了IServiceProviderFactory<ContainerBuilder>

技术图片

 但是不在UseServiceProviderFactory<TContainer>里面配置的话,就只能

            services.AddAutofac(container=>
            {
            });

而且不能有ConfigureContainer(ContainerBuilder builder),要不然会提示

技术图片

 

 

比如我们有个MyClass

    public class MyClass
    {
        public void Hello()
        {
            Console.WriteLine("Hello");
        }
    }

我们配置一下

Host

        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .UseServiceProviderFactory(new AutofacServiceProviderFactory()) //增加
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                });

然后

Startup.ConfigureContainer

        public void ConfigureContainer(ContainerBuilder builder)
        {
            builder.RegisterType<MyClass>().SingleInstance();
        }

 

或者

            services.AddAutofac(container=>
            {
                container.RegisterType<MyClass>().SingleInstance();
            });

 

大功告成~~~

.Net Core 3.0依赖注入替换 Autofac

标签:containe   write   static   官方   bho   provider   efault   configure   简单   

原文地址:https://www.cnblogs.com/NCoreCoder/p/11577584.html

(0)
(1)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!