标签:Core Autofac Auofac 容器 AOP webBuilder Net IOC containerBuilder
IOC-------控制反转
既然全都交给容器来管理,自然容器可以管理对象的生命周期,还有AOP(在注入的时候进行一些逻辑)
.Net Core 内置了一个IOC容器,在ServiceCollection中,有三个生命周期
AddTransient-----瞬时,用的最多
AddScoped-----一个请求只有一个实例
AddSingleton-----一个线程只有一个实例
但是ServiceCollection也有局限性:无法批量注入,无法实现AOP。
解决方案:利用第三方IOC容器,如Atuofac
Step1:引入两个程序集Autofac.Extras.DynamicProxy(Autofac的动态代理,它依赖Autofac,所以可以不用单独引入Autofac)、Autofac.Extensions.DependencyInjection(Autofac的扩展)
Step2:在Program.cs中替代旧有容器
public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .UseServiceProviderFactory(new AutofacServiceProviderFactory()) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); });
Step3:在Startup.cs中添加ConfigureContainer方法
public void ConfigureContainer(ContainerBuilder containerBuilder) { var assemblyFiles = Assembly.LoadFrom("filePathName"); //指定已扫描程序集中的类型注册为提供所有其实现的接口。 containerBuilder.RegisterAssemblyTypes(assemblyFiles).AsImplementedInterfaces(); }
标签:Core,Autofac,Auofac,容器,AOP,webBuilder,Net,IOC,containerBuilder
来源: https://www.cnblogs.com/xingzhu-nan/p/12547929.html
本站声明:
1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。