.Net Core 3.0依赖注入替换 Autofac
Posted ncorecoder
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了.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(); );
大功告成~~~
以上是关于.Net Core 3.0依赖注入替换 Autofac的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET Core Web 应用程序系列- 在ASP.NET Core中使用Autofac替换自带DI进行批量依赖注入(MVC当中应用)
ASP.NET Core Web 应用程序系列- 在ASP.NET Core中使用Autofac替换自带DI进行构造函数和属性的批量依赖注入(MVC当中应用)
ASP.NET Core Web 应用程序系列- 在ASP.NET Core中使用Autofac替换自带DI进行构造函数和属性的批量依赖注入(MVC当中应用)