当前位置: 首页 > news >正文

宜昌 网站建设 公司深圳龙华汽车网站建设

宜昌 网站建设 公司,深圳龙华汽车网站建设,2021还适合开网店吗,站长工具seo查询软件老版Abp对Castle的严重依赖在vnext中已经得到了解决,vnext中DI容器可以任意更换,为了实现这个功能,底层架构相较于老版abp,可以说是进行了高度重构.当然这得益于.Net Core的DI容器组件本身的优势.接着abp vnext2.0核心组件之模块加载组件源码解析 上文,上文中我跳过了DI切换这个… 老版Abp对Castle的严重依赖在vnext中已经得到了解决,vnext中DI容器可以任意更换,为了实现这个功能,底层架构相较于老版abp,可以说是进行了高度重构.当然这得益于.Net Core的DI容器组件本身的优势.接着abp vnext2.0核心组件之模块加载组件源码解析 上文,上文中我跳过了DI切换这个流程,因为我觉得这是整个框架的亮点之一,所以单独写了这篇随笔. .Net Core2.2之后,切换DI的实现换了,改成实现如下接口 1、核心ServiceProviderFactory接口实现核心原理非常的简单,看看vnext如何实现这个工厂约束接口,并返回指定provider. 大致的逻辑是传入ServiceCollection,遍历ServiceCollection使用autofac的containerbuilder进行注入.最后调用containerbuilder实例的builder的build方法,返回provider.一气呵成,很简单.接着,重点来了,看看Populate方法,看看其如何将ServiceCollection中的类型注入autofac容器的.先将原生DI的相关功能转换成Autofac的,接着进行类型注册. 第一步获取模块加载类型中所有的模块,模块信息如下:第二步释出DI容器中的ServiceRegistrationActionList,这个list非常重要.在DI默认容器转中的类型注入Autofac容器时,会遍历所有类型,并将类型的类型和实现生成上下文,传递给指定的action,实现代码如下: 看看vnext的示例代码如下:  简单的工作单元.介绍了ServiceRegistrationActionList之后,接着看如下代码:  遍历所有的services集合,根据注入的方式和注入类型的差异进行区分,并注入到Autofac的ContainerBuilder中.代码很简单,挑个重点说下,如下: 红框中的第一行,代码如下: 如果当前类型所在的程序集属于应用程序集,不是与第三方程序集,则启动属性注入反射的方式.红框中的第二行就是上面介绍的遍历所有类型,生成上下文,并执行DI中注入的ServiceRegistrationActionList中的action,这里注意拦截器的注入,如下:在执行完所有的Action之后,其中有部分Action,如下:  是向上下文中的拦截器集合追加拦截器的,所以当所有的action执行完毕之后,所有的拦截器也被写入到了拦截器集合中.下一步初始化拦截器。如下: 这边后续会写一篇随笔,专门介绍vnext中的拦截器的机制.涉及到另一个组件.本文就不介绍了.不是本文的重点.顺便提一句 有能力的可以做一下这个todo.ok,到这里所有的默认DI中的类型集合全部注入到了autofac中,并且完成了拦截器的初始化和应用程序框架的自动属性注入功能.整个Populate方法执行完毕.AbpAutofacServiceProviderFactory的CreateBuilder方法也就结束了.最终将默认DI中的类型集合(IServiceCollection)转换成Autofac中的ContainerBuilder接着看看CreateServiceProvider方法如下: 看看AutofacServiceProvider的构造,如下: 具体参考源码,实现了默认DI的获取Services接口。所以你可以继续用默认DI提供的方法,但是此时DI已被切换成了Autofac. 2、模块加载系统如何与之配合接下去看看vnext的模块加载系统如何配合AbpAutofacServiceProviderFactory完成DI切换第一步需要注入Autofac服务.在注入核心的工厂服务后,且整个vnext框架的类型全部注入到默认DI中,那么需要触发核心工厂服务的相关方法如下:继续观察ServiceCollectionCommonExtensions类下面的BuildServiceProviderFromFactory,如下 直接调用核心的工厂服务的CreateBuilder方法,这样所有默认DI中的类型全部注入到了autofac的容器中.并且切换默认DI容器到了autofac.替换默认DI的核心接口实现如下: 最后需要将模块加载系统中预先注入的ServiceProvider替换成核心的工厂服务的CreateBuilder方法执行后生成的ServiceProvider. ok,整个DI切换流程到这里结束.abp团队的实现很简洁.如果你需要扩展其他的DI容器,可以参照他们的实现. 纯属个人理解,能力有限,有问题请指正!
http://www.yutouwan.com/news/469437/

相关文章:

  • 创建网站公司 徐州韩国风格网站
  • 深圳宝安网站设计公司大赛网站开发需求
  • 富阳网站建设洛洛科技网站域名备案注册证书查询
  • 怎么做专门卖二手衣服的网站seo优化网站教程
  • 上海市网站建设公司便宜正品的购物app
  • 帮朋友做网站不给钱公司企业名录大全
  • 新手学网站建设个人域名备案后不能干什么
  • 民宿网站开发数据流图唐山专业做网站
  • 网站seo优化方案设计电商网站规划设计方案
  • 网站排名效果好景观建设网站
  • 中国招标建设信息网站wordpress设置使用旧版编辑器
  • 百度手机导航官方新版做seo要投入什么
  • asp.net视频网站模板下载@安徽网站建设
  • 合水口网站建设做药物研发的人上什么网站
  • 一起做网站潮汕pc网站做移动端适配
  • 腾讯云网站搭建教程推广软文200字
  • 免费做婚礼邀请函的网站宿迁网站建设
  • 做ppt比较好的网站保健品网站设计
  • 怎么做直播网站超管青岛seo网站建设公司
  • 怎么制作公司网站泰安星际网络公司
  • 作风建设活动网站找人做网站协议
  • 百度推广 个人网站字体怎么安装到电脑wordpress
  • 康巴什住房和城乡建设局网站交互式网站定义
  • 天河区建设水务局网站编程教学入门教程
  • 手机网站自助建站编写微信小程序用什么软件
  • 事业单位 网络网站建设数字营销专业学什么
  • 网站做的好有什么用政务服务平台
  • 外贸公司做网站该去哪里找自建房平台设计
  • 做书app下载网站有哪些内容做网站用html还是php
  • 大余县网站婚恋网站建设教程