【前言】
上一篇中,Eleven带大家Asp.Net Core内置的IOC容器ServiceCollection的学习,包括了框架内置的一些服务。但是因为这个容器一来局限性比较大,二来大家本来还有自己熟悉的容器,切换也有成本,然后在下一篇文章中,Eleven将带大家尝试去替换Asp.Net Core中的默认容器,换上你熟悉的技术栈,一起来看看吧!
【如何替换容器】
内置的服务容器ServiceCollection程序配置大家还记得吗?对一个容器实例进行配置的,返回一个void即可。
替换容器也是在这里的,将方法改造成返回一个IServiceProvider对象,那这个用自定义的容器来替代默认的ServiceCollection,其中替换的原理是应用的装饰器模式,这个小伙伴儿如果对装饰器模式不太清楚的,可以在公众号联系老师获取下之前这一块儿讲解的内容。改造后如下:
这些注册都可以不用修改,还是向ServiceCollection注册,然后再引入下Autofac,目前笔者用的版本是4.8.1,初始化代码如下:
核心就是new AutofacServiceProvider(container),装饰器包裹一番默认容器,再创建对象的时候优先Autofac的实现。有了以上的容器替换升级,后面在控制器里就可以直接使用了:
【Autofac扩展应用】
既然已经替换成自定义的Autofac容器了,我们就可以用更多Autofac的容器功能了,比如RegisterModule功能:
直接注册全部的控制器,支持属性注入。还可以去做一下AOP的扩展:
Autofac还有各种便捷的使用和扩展方式,大家都可以搬过来一一去尝试和使用了,Eleven就不再上代码了。如果需要文章中案例的代码,可以在公众号联系助教老师获取。
【结语】
Asp.Net Core不仅内置的IOC容器ServiceCollection,还可以很轻松的替换成我们熟悉的Autofac,熟悉的那些注册方式和AOP扩展都可以轻松应用到Asp.Net Core啦!虽然换了个开发框架,但是做好扩展订制后,我们还是可以很轻松的切换到新框架的开发的,小伙伴儿们,你是愿意成为那个搭建框架的人,还是那个复制粘贴的业务逻辑实现搬运工呢?欢迎多多关注,在下一篇文章中,Eleven将带大家去尝试Asp.Net Core中的一些必备小功能,!欢迎关注公众号,欢迎讨论,欢迎转发,愿天下有需求的人都能看到!
看完本文有收获?请转发分享给更多人
关注「.net学院」,提升.Net技能
觉得文章不错,可以留言,免费送资源哟。。。。