zoukankan      html  css  js  c++  java
  • .Net Core 3.0依赖注入替换 Autofac

    今天早上,喜庆的更新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();
                });

    大功告成~~~

  • 相关阅读:
    Typora集成免费图床:PicGo + Gitee
    Github shields徽章配置方法介绍
    Python爬虫的简易流程
    MVC学习系列——Filter扩展
    MVC学习系列——ActionResult扩展
    JQuery插件,傻傻分不清!
    闲谈前端编码解码、C#编码解码。
    年终总结和职业规划
    MVC学习系列——记一次失败面试后,感想。
    C/C++四种退出线程的方法
  • 原文地址:https://www.cnblogs.com/NCoreCoder/p/11577584.html
Copyright © 2011-2022 走看看