内置哪几种服务容器_Asp.Net Core2.2 控制反转IOC之自定义容器

d4e68c7b367b36f2c818f6b368a90ab6.png

【前言】

上一篇中,Eleven带大家Asp.Net Core内置的IOC容器ServiceCollection的学习,包括了框架内置的一些服务。但是因为这个容器一来局限性比较大,二来大家本来还有自己熟悉的容器,切换也有成本,然后在下一篇文章中,Eleven将带大家尝试去替换Asp.Net Core中的默认容器,换上你熟悉的技术栈,一起来看看吧!

c25f2664d9420a56487495e2a1fa133a.png

【如何替换容器】

内置的服务容器ServiceCollection程序配置大家还记得吗?对一个容器实例进行配置的,返回一个void即可。

07128061a56f4009ba0e16f37914b254.png

替换容器也是在这里的,将方法改造成返回一个IServiceProvider对象,那这个用自定义的容器来替代默认的ServiceCollection,其中替换的原理是应用的装饰器模式,这个小伙伴儿如果对装饰器模式不太清楚的,可以在公众号联系老师获取下之前这一块儿讲解的内容。改造后如下:

7fd9c4dd8047113be6ed07d33c514704.png

这些注册都可以不用修改,还是向ServiceCollection注册,然后再引入下Autofac,目前笔者用的版本是4.8.1,初始化代码如下:

497d4e8c61ceb6181a3e4f401b07610d.png

核心就是new AutofacServiceProvider(container),装饰器包裹一番默认容器,再创建对象的时候优先Autofac的实现。有了以上的容器替换升级,后面在控制器里就可以直接使用了:

e17ccdc21034f0b279fae0deeecec537.png

【Autofac扩展应用】

既然已经替换成自定义的Autofac容器了,我们就可以用更多Autofac的容器功能了,比如RegisterModule功能:

cf9734ffdb50c51974e5fbf0151bdad5.png

直接注册全部的控制器,支持属性注入。还可以去做一下AOP的扩展:

19d765e463492ec6736e931e7670e8fc.png

Autofac还有各种便捷的使用和扩展方式,大家都可以搬过来一一去尝试和使用了,Eleven就不再上代码了。如果需要文章中案例的代码,可以在公众号联系助教老师获取。

【结语】

Asp.Net Core不仅内置的IOC容器ServiceCollection,还可以很轻松的替换成我们熟悉的Autofac,熟悉的那些注册方式和AOP扩展都可以轻松应用到Asp.Net Core啦!虽然换了个开发框架,但是做好扩展订制后,我们还是可以很轻松的切换到新框架的开发的,小伙伴儿们,你是愿意成为那个搭建框架的人,还是那个复制粘贴的业务逻辑实现搬运工呢?欢迎多多关注,在下一篇文章中,Eleven将带大家去尝试Asp.Net Core中的一些必备小功能,!欢迎关注公众号,欢迎讨论,欢迎转发,愿天下有需求的人都能看到!

1072d9e58bee44b13b6e812fbec8fc4a.png

看完本文有收获?请转发分享给更多人

关注「.net学院」,提升.Net技能


觉得文章不错,可以留言,免费送资源哟。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值